码迷,mamicode.com
首页 > 其他好文 > 详细

C/C 动/静 态库

时间:2015-02-09 14:11:20      阅读:98      评论:0      收藏:0      [点我收藏+]

标签:c语言   编译   

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 动/静 态库

标签:c语言   编译   

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

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