动态库制作
制作过程:
1.gcc -c -fpic xxx.c (得到和位置无关的代码)
2.gcc -shared xxx.o -o libxxx.so (得到动态库)
编译报错:
报错原因分析:只是放了动态库的信息进入可执行程序中,并没有加载到内存中,动态库的绝对路径没有放入下图中定位共享库文件过程中的任意一个位置(DT_RPATH段无法改变)
解决方法:添加对应动态库的绝对路径
1.终端配置(临时的重新打开会消失) 在环境变量中添加
2.用户级配置 在环境变量中添加
这句话和上面. .bashrc同理
bashrc中最后加入 后执行 在运行文件
3.系统级配置 在环境变量中添加
同理填入
最后
4.配置/etc/ld.so.cache文件列表
先进去在更新
插入路径
5.将动态库文件放入/lib/或者/usr/lib目录中(不建议使用原因这里有很多系统自带的库文件,避免重名替代)
动态库优缺点