动态库与静态库

在打包函数工具的时候,我们一般有两种方式,生成静态库或者动态库的方式。

  1. 静态库和动态库都是以lib开头命名。
  2. 静态库以.a结尾,动态库以.so结尾。

libhello.so, hello是库的名称。

生成静态库(libhello.a):

gcc -c hello.c
ar cr libhello.a hello.o

gcc -o main main.c -L. -lhello

生成动态库(libhello.so)

gcc -c hello.c
gcc -shared -fPIC -o libhello.so hello.o

gcc -o main main.c -L. -lhello

./main运行的时候从/lib或者/usr/lib中查找动态库文件,所有一般把动态库文件放在这两个目录下面。
如果放在其他目录下,可以设置LD_LIBRARY_PATH路径。

export LD_LIBRARY_PATH=./

动态库和静态库的区别:

  1. 静态库在编译的时候进行链接。
  2. 动态库在运行时链接。
  3. 静态库编译出的可执行文件大,运行时不用查找,执行效率高。
  4. 动态库运行时查找库文件进行链接,效率低,但是在更新可执行文件的时候不需要重新编译,只需要更新库文件。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值