在 Linux 系统中,当应用程序执行时,系统会按照一定的规则去寻找动态链接库(也称为共享库或 .so
文件)。系统使用一组默认的搜索路径来查找这些库,以便在运行时正确加载所需的库。以下是 Linux 系统寻找动态链接库的一般规则:
-
系统默认路径:
Linux 系统会在一组默认的路径中查找动态链接库。这些路径通常包括/lib
和/usr/lib
。在 64 位系统中,可能还会包括/lib64
和/usr/lib64
。 -
LD_LIBRARY_PATH 环境变量:
如果设置了LD_LIBRARY_PATH
环境变量,系统会在这个环境变量中指定的路径中查找动态链接库。例如:export LD_LIBRARY_PATH=/path/to/library/directory
注意,使用
LD_LIBRARY_PATH
可能会导致库的混乱和不稳定,因此谨慎使用。 -
/etc/ld.so.conf 文件:
系统会读取/etc/ld.so.conf
文件中列出的路径,以查找动态链接库。在这个文件中,您可以列出需要搜索的目录路径。 -
/etc/ld.so.conf.d/ 目录:
/etc/ld.so.conf.d/
目录中包含了其他库路径的配置文件。这些文件被系统读取以添加额外的库搜索路径。 -
rpath/rpath-link 编译选项:
在编译应用程序时,您可以使用-Wl,-rpath
或-Wl,-rpath-link
等编译选项来指定运行时搜索库的路径。 -
Cache 文件:
Linux 系统维护着一个动态链接库的缓存文件,用于加快库的查找速度。此缓存通常位于/etc/ld.so.cache
。
系统会按照上述规则依次查找动态链接库,直到找到所需的库或无法找到为止。如果找不到所需的库,应用程序可能会失败并报告缺失的库错误。通常情况下,将库放置在系统默认的库路径下是最为推荐和稳定的做法。
标签:ld,Linuxy,路径,系统,应用程序,etc,so,动态链接库 From: https://www.cnblogs.com/feipeng8848/p/17639698.html