Linux库概念

Linux库概念

分文件编程的好处

分模块的编程思想;功能责任划分;方便调试;主程序简洁

关于库的简单解释

静态函数库:程序执行前(编译)就加入到目标程序中

优点:运行快;发布程序时无需提供静态库,移植方便

缺点:大;更新,部署,发布比较麻烦

动态函数库:程序执行时动态(临时)由目标程序去调用

优点:小,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序可共用,节省内存;程序升级简单。

缺点:运行慢(相对静态库);发布程序需要提供依赖的动态库

关于库的制作

静态库

静态库的制作(格式:eg:libfuncs.a)

  • gcc func.c -c 生成func.o文件(func.c 为要生成静态文件的源文件)
  • ar rcs libfuncs.a func.o func.o文件生成libfuncs.a静态库文件(libfuncs即为所要生成的目标静态文件)

静态库的使用

gcc main.c -lfuncs -L ./ -o mainStatic(main.c为所要执行的主程序;-lfuncs -l表示制作要用的静态库,库名去掉lib和后缀;-L表示从-L指定的路径去找静态库。默认是从 /usr/lib 或 /usr/local/lib 去找)

动态库

动态库的制作

动态库和共享函数库表示一个(Linux上叫共享对象库,文件后缀为 .so,windows上叫动态加载函数库,后缀名为 .dll)

命名规则:

请添加图片描述

命令:gcc -shared -fpic func.c -o libfuncs.so ( -shared 指定生成动态库;-fipc标准,选项作用于编译阶段,在生成目标文件时就得使用该选项,以生成位置无关的代码)

动态库的使用

gcc main.c -lfuncs -L ./ -o mainDy 和静态库的使用一样

不过在使用的时候要指定动态库 的路径

可以使用:export LD_LIBRARY_PATH=“动态库路径”,(可以指定该程序运行时,在 LD_LIBRARY_PATH 所执行的路径去找库文件)不过在每次进入树莓派的时候都需要指定,所以可以将此命令和需要执行的程序放在一个shell脚本里来共同执行。

// 首先创建start.sh脚本
export LD_LIBRARY_PATH="动态库路径"
./mainDy
    
// 保存退出,加可执行权限 chmod +x start.sh
// ./start.sh 即可执行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Luish Liu

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

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

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

打赏作者

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

抵扣说明:

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

余额充值