打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
C 静态库动态库的一些经验总结「建议收藏」
userphoto

2022.08.03 加拿大

关注

一.静态库

静态库只是将一些c或者cpp文件编译成.o之后打包成一个.a,这个静态库中有所有文件的.o,所有文件的符号链接,函数表。能清楚的查询到需要的函数名字,用到的源文件名字。

查看.a中含有哪些文件

ar t temp.a

查看符号表之类的信息,函数栈

nm temp.a

假设,一个temp.a  一个你自己编写的hello.c  其中hello中引用了temp.a中的函数。你想把.a中的函数做一层转换然后给其他人使用,这时候你可以先解压出.a中的所有.o然后在加上你编写的hello.c重新打包成一个新的hello.a给其他人使用。

ar x temp.a  //从存档中提取成员

ar cru temp.a *.o//重新创建一个归档,当前目录下所有的.o

ranlib temp.a// 打包成.a

还有一中方式:

直接向.a中添加某个.o文件

ar -q temp.a hello.o

二.使用静态库方法

1.在makefile中包含其头文件 -I xxx/include

2.在makefile中链接时间直接写上.a的全路径   xxx/temp.a

三.动态库。

1.动态库的创建

*******确保所有的文件编译的过程中都使用到-shared -fPIC 选项,否则出错。

 gcc -c  hello.c -fPIC -o hello.o

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

2.动态库的使用

1.首先makefile中包含其头文件。

2.加上-L 指定库的路径 -L xxx/lib

3.加上编译选项-lhello   注意需要去掉之前的lib

查看某个动态库依赖其他的so 可以直接对其ldd 就能查看到

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
在Linux下如何使用GCC编译程序、简单生成静态库及动态库。
linux静态链接库与动态链接库的区别及动态库的创建
使用Automake生成Makefile及动态库和静态库的创建 - Briver Song...
gcc/g++ 链接库的编译与链接
Linux下动态库(.so)和静态库(.a)
gcc使用动态库链接静态库
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服