linux 静态库与动态库的制作

静态库

静态库命名规范,
惊天库名字以lib开头,以.a为后缀

静态库生成指令
ar rcs libmylib.a file.o …

制作步骤
(1) 写好源码
(2) 只编译不生成.o文件 gcc -c dev.c -o dev.o
(3) 制作静态库 ar rcs libname.a dev.o
(4) 制作静态库函数的头文件

静态库的使用
需要指定静态库的路径 以及使用-I 指定头文件路径. 进行编译链接
(1) gcc test.c ./lib/libmylib.a -o test.o -I ./inc

动态库
1 生成位置无关的.o文件; 需要加-fPIC 参数
gcc -c lib.c -o add.o -fPIC

位置无关码:CPU取指时用相对地址取指令(比如pc +4),只要其相对地址没有变,都能够取指并运行。

位置相关码:利用绝对地址取指并运行,这就需要你存放程序(链接过程中)需要按照连接脚本的要求那样执行(Makefile里面有 -Ttext xxx指定或连接脚本)。

2- 使用gcc -shared 制作动态库
gcc -shared -o lib库名.so add.o…

3, 编译可执行程序指定所用的动态库, -l : 指定库名, -L 指定库路径, -I 指定头文件路径
gcc test.c -o a.out -l libmylib.so -L ./lib -I /inc

4, 运行可执行程序./a.out

报错
./dynmain.out: error while loading shared libraries: libdyn.so: cannot open shared object file: No such file or directory

这种情况是没有配置环境变量, 需要将
export LD_LIBRARY_PATH=动态库路径.
并且将这个环境变量放在 ./bashrc

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值