Linux静态库与动态库制作及使用

一、二者区别
1、静态库是在程序执行前就加入到目标程序中去
动态库程序执行的过程动态的由目标程序去调用
2、静态库对空间要求不高,对时间要求高
动态库对时间要求不高,对空间要求高
二、库制作
同一目录下有三个文件 主:helloMain.c 头: helloMain.h功能: helloFunc.c
1、静态库的制作
静态库文件格式:libxxxx.a
a、gcc helloFunc.c -c 生成helloFunc.o文件
b、ar rcs libhellotest.a helloFunc.o 生成libhellotest.a 静态库文件
2、静态库的使用
gcc helloMain.c -lhellotest -L ./ -o a.out
直接运行a.out就可以
-l: 是制作要用的静态库,库名砍头去尾
-L:是告诉gcc编译器从-L指定的路径中去找静态库,默认是从/usr/lib或/usr/local/lib去找
3、动态库的制作
动态库文件格式:libxxxx.so
gcc -shared -fpic helloFunc.c -o libhellotest.so
-shared:是指定生成动态库
-fpic:是一个标准,编译阶段生成位置无关码
4、动态库的使用
gcc helloMain.c -lhellotest -L ./ -o a.out
此时直接运行a.out会出错,找不到库。
第一种解决方法:将生成的libhellotest.so 拷贝到 /usr/lib文件夹下,拷贝时需要加上超级用户权限
第二种解决方法: export LD_LIBRARY_PATH = “动态库文件路径”,但此时配的环境变量是临时的
可以使用shell脚本解决这个问题,步骤如下
a、vi start.sh
b、在start.sh中添加export LD_LIBRARY_PATH = “动态库文件路径”,和./a.out然后保存
c、chmod +x start.sh:给shell脚本添加可执行权限
d、./start.sh
通过以上解决方法,然后在运行a.out就可以了
使用du 命令 可以查看文件的大小 此时就可以使用du 静态库生成的文件和动态库生成的文件
静态库的文件会大一些

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值