目录
- [1 背景](#1 背景)
- [2 动态库查询路径](#2 动态库查询路径)
- [2.1 设置临时路径](#2.1 设置临时路径)
- [2.2 设置永久路径](#2.2 设置永久路径)
- [3 注意](#3 注意)
1 背景
Linux下动态库查询路径与Windows不同,即使动态库文件与可执行程序在相同目录下也是找不到的。
2 动态库查询路径
在Linux系统中,动态库查找路径通常由以下几个环境变量决定:
-
LD_LIBRARY_PATH:这个环境变量包含了一系列用冒号分隔的目录,在这些目录里面查找动态库。
-
/etc/ld.so.conf 文件和 /etc/ld.so.conf.d/ 目录下的文件:这些文件列出了动态链接器查找共享库的默认目录。
-
/etc/ld.so.conf文件内容如下:
shell$ cat /etc/ld.so.conf include /etc/ld.so.conf.d/*.conf
-
/etc/ld.so.conf.d/下文件如下:
shell$ ll /etc/ld.so.conf.d/ -rw-r--r-- 1 root root 168 Nov 22 2023 i386-linux-gnu.conf -rw-r--r-- 1 root root 182 Mar 9 2022 ld.wsl.conf -rw-r--r-- 1 root root 44 Apr 15 2020 libc.conf -rw-r--r-- 1 root root 100 Apr 15 2020 x86_64-linux-gnu.conf -rw-r--r-- 1 root root 56 Nov 22 2023 zz_i386-biarch-compat.conf
-
其中x86_64-linux-gnu.conf文件内容如下:
shell$ cat /etc/ld.so.conf.d/x86_64-linux-gnu.conf # Multiarch support /usr/local/lib/x86_64-linux-gnu /lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu
-
-
系统默认路径 /lib 和 /usr/lib:即使没有设置环境变量,系统默认路径也是动态库查找的地方。
2.1 设置临时路径
如果你想要临时添加一个查找路径,可以在终端中使用以下命令:
shell
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/library
2.2 设置永久路径
- 如果你想要永久添加一个查找路径,可以将上述命令添加到你的 ~/.bashrc 或 ~/.profile 文件中。
- 如果你想要修改 /etc/ld.so.conf 或 /etc/ld.so.conf.d/ 中的配置,你需要具有管理员权限。例如,你可以创建一个新的 .conf 文件在 /etc/ld.so.conf.d/ 目录下,并添加你的库路径,然后运行 ldconfig 命令来更新缓存。
-
例如,创建一个新的 .conf 文件:
shellsudo sh -c 'echo "/path/to/library" > /etc/ld.so.conf.d/mylibrary.conf'
-
然后更新配置:
-
3 注意
请注意,修改系统级的动态库路径需要谨慎,因为这会影响到系统中所有使用动态链接器的程序。