首页 > 其他 > 详细

C/C 动/静 态库

时间:2015-02-09 14:10:05      阅读:262      评论:0      收藏:0      [点我收藏+]

c语言由文本到二进制的过程 编译 -> 汇编 -> 链接
动态库是程序链接的时候被链接,使用动态库的好处:

-如果多个程序使用同一个动态库,如果动态库出现bug,不需要升级所用该动态库的程序,只要升级该动态库。
-该动态库只有这一个,没有其他副本,节省内存空间

静态库是编译的时候被载入,使用静态库的好处:

-使用静态库编译好的 程序在任何机器上都可以直接运行。
-如果有多个程序使用该静态库,如果升级该静态库,使用该静态库的所有的软件都要重新编译。

在使用动态库的时候,经常会出现动态库未被发现:undefined reference to ‘函数名’

ldd  可执行文件  #查看哪个库没有被发现

解决方法
以把当前路径加入

#vim   /etc/ld.so.conf
 1 include ld.so.conf.d/*.conf
 2 /usr/local/gcc/gmp-4.3.2/lib
 3 /usr/local/gcc/mpfr-2.4.2/lib
 4 /usr/local/gccc/mpc-0.8.1/lib
 5 /home/xiaowei/metad/dev/metad/plugins/netflow_v9/src

然后:

#ldconfig

在使用的时候:

gcc -fPIC -shared libaa.so aa.c
gcc -o  list list.c  -L.   -laa
-L:表示共享库路径

静态库

#gcc -c hello.c 这里没有使用-shared选项
#ar -r libhello.a hello.o
在程序中链接静态库
#gcc test.c -lhello -L. -static -o hello.static

C/C 动/静 态库

原文:http://blog.csdn.net/zhangxxxww/article/details/43669765

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!