- 动态链接库加载路径及搜索路径是什么
动态链接库(Dynamic Linking Library)是在程序运行时才动态链接的库,实现了程序的共享。Linux系统下的动态链接库有两种,一种是共享目标文件(Shared Object),简称‘SO’文件,另一种是可执行文件(Executable),简称‘ELF’文件,共享目标文件是常用的形式。
动态链接库加载路径用来告诉操作系统动态链接库在哪里,是一个环境变量,叫做LD_LIBRARY_PATH
,通常存放在/etc/profile
文件中或者用户工作区的.bashrc
或者.bash_profile
文件中。
动态链接库搜索路径是操作系统寻找动态链接库的路径,其顺序如下:
1. DT_RPATH
2. LD_LIBRARY_PATH
3. /etc/ld.so.cache
4. /lib, /usr/lib
-
示例说明
-
示例一
假设我们已经编译好了一个动态链接库文件libtest.so,它的绝对路径是/usr/local/lib/libtest.so
,对于需要使用libtest.so的程序而言,需要告诉操作系统动态链接库在哪里,这时候需要设置LD_LIBRARY_PATH
。在终端输入如下命令:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
这样就能让操作系统知道动态链接库的路径。
- 示例二
假设我们的动态链接库文件libtest.so已经放到了系统默认的搜索路径(/lib,/usr/lib,并放到/etc/ld.so.cache中),这时候我们的程序需要调用这个库,那就不需要设置LD_LIBRARY_PATH
,程序会自动在默认路径下搜索动态链接库。如果库文件不在系统默认路径下,就需要将动态链接库路径加到LD_LIBRARY_PATH
中。
总之,动态链接库加载路径及搜索路径的理解对于Linux系统的使用和维护都非常重要。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Linux下动态链接库加载路径及搜索路径问题 - Python技术站