1). lib + 名字 + .so
1). 生成与位置无关的代码(生成与位置无关的.o) gcc -fPIC -c *.c 多个参数-fPIC
2). 将.o打包成共享库(动态库)
3>.发布和使用共享库
4>. 解决程序执行时动态库无法被加载的问题:
1)放到系统的库目录中 --- 不允许使用
2) 临时测试 (终端关闭后就会失效)
环境变量: LD_LIBRAREY_PATH 将动态库的路径设置给该变量
将设置的值,导入到系统环境变量中: export LD_LIBRARY_PATH
3) 不常用的方法(永久设置):
在家目录的.bashrc文件中添加一句话: export LD_LIBRATRY_PATH=动态库目录的绝对路径
.bashrc修改完成,需要重启终端
4)
1. 需要找到动态连接器的配置文件 -- /etc/ld.so.conf
2. 动态库的路径写到配置文件中(绝对路径)
3. 更新 --- sudo ldconfig -v
5>. 动态库的优缺点
优点
1. 执行程序体积小
2. 动态库如果更新了 不需要重新编译程序 (函数接口不变)
缺点:
1.发布程序的时候,需要将动态库提供给用户
2.动态库没有被打包到应用程序中,所以调用起来相对较慢一些