Linux库概念及相关编程

1 linux库分为静态库和动态库
1.1静态库
静态库函数库是在程序执行前(编译)就加入到目标程序中去的。
优点:1,运行快 2 发布程序无需提供静态库,因为编译时已经添加,移植方便。
缺点:1.内存大 2 更新,部署,发布麻烦。

1 . 2动态库
动态函数库,是在程序执行时动态由目标程序去条用。
优点:1 链接是不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序可以共用,节省内存。 2 程序升级简单,因为APP里面没有库的源代码,升级之后只要库的名字不变,函数名以及参数不变,只是实现了优化,就能加载成功。
缺点:1 加载速度比静态库慢 2 发布程序需要提供依赖的动态库。

2.库的制作
2.1静态库的制作(格式****.a)
第一步:gcc calcufuncs.c -c .o (生成.o文件)
第二步:ar rcs libcalcufunc.a calcufuncs.o (*.o文件生成.a静态文件库)

2.2动态库的制作
gcc -shareh -fpic .c -o lib.so
(-shared指定生成动态库 -fpic标准)

3.库的使用
3.1 静态库
生成可执行文件 gcc ***.c -lcalcufunc -L ./ -o mainProStatic
(-lcanlcufunc -l是指定要用的静态库,库名砍头去尾 。-L 告诉gcc编译器从-L指定的路径去找静态库)
直接 ./mainProStatic 便可执行

3.2动态库
生成可执行文件 gcc calculatorT.c -lcalc -L ./ -o mainProDy (但不能直接./mainProDy 去执行,而要指定动态库的位置)

带动态库的程序,
可以指定该程序运行时候,在LD_LIBRARY_PATH 所指定的路径去找库文件
先执行export LD_LIBRARY_PATH="/home/pi/back/test"(你要用的动态库所在路径)临时指定库
再执行 ./mainProDy
当以上分步执行只能在当前窗口有用,因为export LD_LIBRARY_PATH="/home/pi/back/test"是临时的。去别的窗口执行./mainProDy,也要先export。
通常我们会写一个shell脚本
export LD_LIBRARY_PATH="/home/pi/back/test"
./mainProDy
把这两句话写进一个文件内保存退出,并用chmod +x (文件名) 命令给这个脚本可执行的权限,然后执行这个脚本。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值