C/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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值