码迷,mamicode.com
首页 > 编程语言 > 详细

[C++] 静态链接库和动态链接库的区别

时间:2015-09-13 15:57:07      阅读:200      评论:0      收藏:0      [点我收藏+]

标签:

静态链接库和动态链接库的区别

一、静态链接库

预编译->编译->汇编->链接

Linux:

生成目标文件

g++ -c source.cpp -o source.o

打包成静态链接库

ar -crv source.a source.o

使用静态链接库

g++ test.cpp -L静态链接库目录 -l静态链接库名称没有后缀

 

二、动态链接库

使用动态链接库是为了规避静态链接库的两个问题。

一个是多个副本的问题,对于静态库都是在编译时刻将其编译到源代码当中,在运行时刻不会再和静态库有任何关系。这样的好处是快,但是造成了空间的浪费

另一个是发布的一致性问题和更新问题,如果是静态库,如果对静态库进行了更新,那么需要重新编译代码,并且提示用户进行下载整个软件,这样会造成很多不变,浪费大量带宽。如果是动态库,只需要更新相应的动态链接库即可,整个软件不需要修改。

Linux平台:

生成目标文件

g++ -fPIC source.cpp -o source.o

动态链接库

g++ -shared source.so source.o

或者合并为一个命令

g++ -fPIC -shared source.so source.cpp

关于在使用中定位动态链接库的位置,需要注意一些问题,默认动态链接库是在/lib 或者 /usr/lib之下的

如果要在其他文件夹之下,需要修改 /etc/ld.so.cache文件

 

[1] http://www.cnblogs.com/skynet/p/3372855.html

[C++] 静态链接库和动态链接库的区别

标签:

原文地址:http://www.cnblogs.com/deepblueme/p/4804954.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!