linux-静态库制作与使用

(5条消息) linux-动态库制作与使用_云的小站的博客-CSDN博客

 创建2个目录进行创建与使用的演示

创建静态库

准备源文件与头文件

查看所有源文件与头文件

 将源文件编译.o文件,然后将.o文件打包为静态库

gcc -c mymath.c -o mymath.o -std=c99
gcc -c myprint.c -o myprint.o -std=c99

ar指令:打包多个.o文件为静态库 

ar -rc libhello.a  mymath.o myprint.o

ar指令打包多个.o文件--->形成以lib开通.a结尾的静态库文件

利用make快速编译并且打包.o文件。

将头文件与静态库打包到一个目录中

使用静态库

让我们将mklib中的hello目录拷贝到uselib中。这其实就是将我们写的库发给别人用,别人只能看见我们的.o文件无法查看我们的原代码。

来到uselib目录中。

编辑一份拥有main()主函数的源文件。

使用库方法一 

将.头文件放到,默认重新寻找头文件路径中路径--->/usr/include/  

将静态库文件放到标准库文件目录下----> /lib64/

 编译main.c源文件,执行-l(小写L)选项指明使用的库文件,头文件会主动再usr/include搜索,但是库文件不会,主要手动指明。

这里指明的时候只需要lib后的名字,并且不要带后缀.a 

 

 但是我们不要将直接将没经大量检验的头文件与库函数直接放到系统目录中,会污染系统头文件与库。毕竟人家的库函数经过数千遍的洗礼,得到的安全稳定的库。

所以我们使用另一个方法。

使用库方法二

刚刚我们再uselib得到目录,而需要的头文件和库都在里面,在编译的时候其实就可以直接使用该库的头文件。

编译main.c源文件的时候添加选项-L ;-I(大写的i) ;-l(小写的L)  

-L:指明库函数路径

-I(大写的i):指明头文件搜索路径 

-l(小写的L):指明库名称不要加lib前缀与.a后缀 

别忘了 先删除系统库目录和头文件我们写的垃圾文件。

还有其他方法但是我们力推第二种方法,不会污染系统库目录与系统头文件目录。

指令其实应该这样写

gcc main.c -I ./output/include/ -L ./output/lib/ -lhello -o main -static

改变默认以动态方式打包,可以在我的另一篇文章详解

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云的小站

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值