文章目录
- 重要命令
- 制作流程和使用
- 动态库加载失败&解决
- 失败的原因:
- ldd命令
- 系统加载动态库(共享库)的顺序
- 问题解决途径
- 一、修改环境变量
- 二、修改/etc/ld.so.cache文件列表
- 三、将动态库放在/lib 或 /usr/lib文件中(==不推荐==)
重要命令
-
gcc -c -fpic xxx.c
-
gcc -shared xxx.o libname.so
制作流程和使用
-fpic:生成与位置无关的文件
和静态库的流程一样,仅仅命令有区别。
👉👉👉静态库的制作和使用
动态库加载失败&解决
失败的原因:
系统找不到库文件的路径
ldd命令
可以通过该命令查看动态库的依赖关系,如下如所示:
系统加载动态库(共享库)的顺序
系统通过动态载入器获取动态库的绝对路径,搜索文件顺序如下所示:
问题解决途径
上边知道了搜索路径,我们可以将动态库放到任意一个位置,环境变量或者其他文件中
查看动态库路径
pwd:查看当前路径
一、修改环境变量
1. 放到环境变量中(终端级别)
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/wlm/Linux/lesson06/lib
👆上边指令表示在环境变量中追加动态库文件路径
echo $LD_LIBRARY_PATH
查看刚刚添加的环境变量
注意: 该方法只在当前终端有效,重新打开终端后失效
2. 在~/bashrc文件中添加环境变量,使其永久有效 (用户级别)
首先进入家目录(~),然后进行下面操作:
命令1:vim .bashrc :打开bashrc文件
在文件最后添加👇:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/wlm/Linux/lesson06/lib
命令2. .bashrc:使修改后文件生效
命令2:source .bashrc 两个命令一个意思
3.在/etc/profile文件中添加环境变量,使其永久有效 (系统级别)
sudo vim /etc/profile
在文件最后添加:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/wlm/Linux/lesson06/lib
source /etc/profile:使文件生效
二、修改/etc/ld.so.cache文件列表
sudo vim /etc/ld.so.conf
动态库文件路径放在该文件中
sudo ldconfig:使文件生效