当前位置: 首页 > Linux

Linux动态库搜索路径顺序

时间:2023-04-06 03:56:51 Linux

在Linux中执行程序时,有时会遇到类似“errorwhileloadingsharedlibraries”的错误,这是因为动态链接器ld找不到程序启动所需的动态库。然后需要设置动态库的搜索路径。动态链接器ld搜索路径的顺序及设置方法:ELF文件中DynamicSection段的DT_RPATH设置的路径。比如可以在编译时加入链接参数“-Wl,--rpath,./lib”,指定搜索./lib。由环境变量LD_LIBRARY_PATH设置的路径。ELF文件中Dynamic段的DT_RUNPATH设置的路径。用法和1类似,需要增加--enable-new-dtags参数。例如,如果链接参数是“-Wl,--rpath,./lib,--enable-new-dtags”,则将DT_RUNPATH指定为./lib。因为DT_RUNPATH存在,所以忽略DT_RPATH。/etc/ld.so.cache中缓存的动态库搜索路径。可以通过修改配置文件/etc/ld.so.conf来增加或删除路径(修改后需要运行ldconfig命令)。默认/lib/和/usr/lib/。如果在链接时指定了-znodefaultlib,这个默认路径将被忽略。PS:您可以使用“readelf-d”查看动态部分。PPS:如果你只想在特定的应用程序上工作,通过设置DT_RPATH或DT_RUNPATH来指定搜索路径是更好的方法。