GCC生成及调用动态库和静态库

说明:本文全部使用的cpp文件,如果要编译C库请将g++替换为gcc

文件:reply.h,reply.cpp,test.cpp,主函数在test.cpp中

(一)静态库的生成及使用

1.生成.o目标文件

g++ -c reply.cpp

2.使用ar命令打包

ar crv libreply.a reply.o   #标注:reply为库名

3.编译test.cpp

 g++ -o test.out test.cpp -L.-lreply 

 g++ -o test.out test.cpp libreply.a

4.运行

./test.out

5.tips:对于ar命令的具体应用(查看静态库文件等),请查看ar命令的手册

man ar或ar

(二)动态库的生成及使用

1.生成.o目标文件

g++ -fPIC -c reply.cpp 

标注:-fPIC则表明使用地址无关代码。PIC:Position Independent Code.    

         如果不加需要像windows下dll文件一样,需要导出的函数加extern

2.打包为.so

g++ -shared -fPIC -o libreply.so reply.o  

3.编译test.cpp

 g++ -o test.out test.cpp -L. -lreply -Wl,--rpath=. 

标注:(1)这里的l是小写的L

          (2)-Wl,--rpath=. 是指定在程序运行时到哪个目录找.so链接库,此处设置为./,如果不设置,只会在系统库中查找libreply.so而导致在运行时报缺少库的错误,如下

./test.out: error while loading shared libraries: libreply.so: cannot open shared object file: No such file or directory

4.运行

./test.out


参考链接:https://blog.csdn.net/eastonwoo/article/details/8241693

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值