Linux下静态库文件和动态库文件的生成和使用

现有main.cpp, function.cpp, function.h

静态库文件和动态库文件都必须基于.o文件来生成。

1.静态库文件(libxxx.a):
前缀必须为lib,后缀必须为.a。
(1)生成:
ar -r libmyfunction.a function.o
将对function.o生成静态库文件,文件名必须为libxxx.a。
一个已生成的静态库文件可以再扩展。当向一个静态库末尾追加新的.o时,需要再执行: runlib libxxx.a

(2)使用:
使用前需要先执行: runlib libxxx.a
源程序可使用静态库 libmyfunction.a 中包含的函数或类,只需在编译时链接上静态库文件:
g++ -o helloworld main.cpp -L. -l myfunction
其中-L是使用静态或动态库的标志, 后面紧跟的.表示该静态库是在当前目录下。若该静态库在/usr/lib下则可执行: g++ -o helloworld main.cpp -L/usr/lib -l function。-l后的function不需要加lib前缀和.a后缀,命令执行时会自动加上。
2.动态库文件(libxxx.so)
(1)生成:
在编译function.cpp成function.o时就必须加上-fPIC选项,表示与内存无关:
g++ -fPIC -c function.cpp
然后再对function.o生存动态库文件:
g++ -shared -o libmyfunction.so function.o
其中-shared选项即是生成动态库文件的标志,文件名必须为libxxx.so。
但是此时生成的 libmyfunction.so是无法使用的,需要加入/usr/lib目录中:
sudo mv libmyfunction.so /usr/lib
但是此时还是不能用,需要更新记录了可使用的动态库文件的记录文件/etc/ld.so.cache,使用命令:
ldconfig
将自动进行更新。此后再编写的函数就可使用该动态库了。
(2)使用:
和静态库文件的使用很类似:
g++ -o helloworld main.cpp -L. -l myfunction
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值