1. 静态库
<1> 命名规则
lib+库名+ .a
<2> 制作静态库
a.生成对应的.o文件
gcc 文件名字 -c -I
b.将生产的.o文件打包 打包工具ar
ar + rcs + 生成静态库的名(libMyname.a)+需要用到的.o文件
<3> 静态库的使用
发布的静态库
头文件(include文件夹内)+.a文件(lib文件夹中)
2.静态库的优缺点
<1> 查看.a文件 nm + libName.a
<2> 查看out文件 nm + out文件
<3>优点:
a.发布程序的时候,无需再提供对应的库
b.库的加载速度快
<4>缺点:
a.库被打包到应用程序中,程序的提及很大
b.如果库发生改变,程序需要重新进行编译
3.动态库,共享库
<1>命名规则
a.lib+名字+.so
<2> 制作步骤
a.生成与位置无关的代码(生成与位置无关的.o)
b.将.o打包成动态库
<3>发布和使用动态库
<4>解决程序执行时,动态库无法被加载
a.放到系统的库目录,不允许使用
b.临时测试
环境变量:LD_LIBRARY_PATH,将动态库路径设置给变量
将设置的值,导入到环境变量中 export LD_LABRARY_PAHT
终端关闭后,设置会失效
c.不常使用的方法
再.bashrc重设置 export LD_LABRARY_PATH=动态库的绝对路径
.bashrc需要重启终端
d.常用的方式
需要找到动态链器的配置文件 /etc/ld.so.conf
sailfish@DESKTOP-GSV91L5:/etc$ cat ld.so.conf include /etc/ld.so.conf.d/*.conf
动态库的路径写入到配置文件中
更新文件--sudo ldconfig -v
<5>动态库的优缺点
优点:体积小、更新方便(函数接口不变)
缺点:发布程序时,需要提供动态库、动态库没有打包到程序中,程序速度相对比较慢