linux 制作静态/动态库

静态库制作
将要制作库的源文件编译成可执行的.o文件

gcc -c 只编译不链接
-o 指定文件名称

gcc -c xxx.c -o xxx.o

然后制作静态库
ar rcs libname.a xx0.o xx1.o
ar rcs 制作工具, 固定的
静态库必须以lib开头.a结尾,

然后静态库的使用
gcc main.c ./lib/libname.o -o a.out -I ./inc

注意-I 指定头文件路径, 头文件可以包含库函数中的所有函数名称,
这样只需要在源文件里面包含头文件,这样就可以调用函数.

动态库制作:
首先将制作源文件的位置无关码
gcc -c xxx.c -o add.o -fPIC
然后制作动态库
gcc -shared -o lib库名.so xx0.o xx1.o

gcc - shared 是制作动态库的工具
动态库命名规则:
lib开头, .so结尾

动态库使用
gcc main.c -o a.out -l 库名 -L ./lib

将main.c编译成a.tou可执行文件
-l 指定库名 , 库名, 即去掉lib开头, 且不用带.so
-L 指定库存放的路径.

然后执行文件
./a.out 但是这样会报错, 因为动态链接器找不到库文件

首先要有两个概念:
链接器: 工作链接阶段, 工作时需要-l 和-L 也就是 gcc main.c -o a.out -l 库名 -L ./lib
在这一步骤需要告诉链接器的动态库名称以及动态库路径
动态链接器: 工作在程序运行阶段, 工作时需要提供动态库所在的目录文位置
LD_LIBRARY_PATH 这个是动态链接器的一个环境变量.
export LD_LIBRARY_PATH = ./lib
因此在程序执行前需要导出这个环境变量.
可以在 ./bashrc 里面进行添加这个环境变量, 这样不用每次重启系统都要手动导出一遍. 因为./bashrc程序启动的时候都会运行,添加咱们的导出环境变量指令之后, 顺便也帮我们自动导出.

关于动态链接器补充, 其实我们的C库就存在于系统之中, 因此我们也可以将我们的动态库放入到系统自带的库函数中
/lib 路径, 不过这种方法不推荐, 不要影响系统的文件

命令
ldd a.out
还有ldd命令 可以查看当前程序执行之后所需要的动态库的路径状态,如果路径为空, 那么就需要进行包含

还有配置文件法,
将库存在的路径, pwd查看
然后添加到
1)/etc/ld.so.conf 文件里面去
然后 sudo ldcconfig -v 使配置文件生效

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值