linux下静态库(.a)、动态库(.so)的制作

目录

(一)静态库

(1)静态库的制作流程

(2)制作静态库

(3)使用静态库编译程序

(二) 动态库(共享库)

(1)将源码进行只编译不链接

(2)制作动态库

(三)动态库使用


(一)静态库

(1)静态库的制作流程

 将源码进行只编译不链接处理;

   gcc -c xxx.c -o xxx.o

(2)制作静态库

 ar rc lib库名.a xxx.o

(3)使用静态库编译程序

-l(小写L) 指明库名

-L 指明库路径

-I(大写i) 指明头函数地址

静态库特点:以空间换取时间

这里推荐三个比较好用的宏

这三个宏使用时包含stdio.h:

__LINE__  代码所在行号

__FUNVTION__ 代码所在的函数名

__FILE__ 代码所在的文件名

(二) 动态库(共享库)

(1)将源码进行只编译不链接

     gcc -c xxx.c -o xxx.o

(2)制作动态库

gcc -shared -fPIC -o lib库名.so xxx.o

(三)动态库使用

方法一:

将动态库放到系统默认动态库路径中 (/usr/lib  /lib)

-l(小写L) 指明库名

-L 指明库路径

方式二:

添加环境变量 LD_LIBRARY_PATH

修改环境变量使用到的shell指令: export

用法: export LD_LIBRARY_PATH = $LD_LIBRARY_PATH:要添加的新路径

例如:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/xyd/204/0417/project/src

gcc work_2.c -I../include   -ltest -L. -o tt

注意:export 指令如果在终端使用,仅在当前终端有效,而且系统重启该设置无效

如果想要export 永久有效,将语句返回系统配置文件(/etc/profile)中,在终端输入source /etc/profile使其生效

方式三:(了解)

编译时指明动态库路径

gcc work_2.c -I../include   -ltest -L. -o tt -Wl,-rpath=.

方式四:(了解)

在/etc/ld.so.conf文件中添加一个动态库所在的路径

然后终端输入ldconfig

动态库特点:以时间换取空间
动态库更新,使用到动态库的可执行程序不需要重新编译

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值