-Wl,-rpath-link
该配置为 “ld option” 其中,-Wl选项告诉编译器将后面的参数传递给链接器 在链接时指定库的路径,不影响程序执行时库的路径
-Wl,–rpath=.,–enable-new-dtags
该配置为 “ld option” 链接可执行程序时写入路径信息DT_RUNPATH 在opensuse上指定-R或–rpath会同时添加DT_RUNPATH和DT_RPATH两个section。对于其他的发行版会只设置RPATH,只有在指定–enable-new-dtags才会加上DT_RUNPATH。 值得注意的是:如果设置了RUN_PATH则完全无视RPATH,而且也不先看自己的RUN_PATH,而是去看LD_LIBRARY_PATH,没有再去看RUN_PATH
-Wl,-rpath,
该配置为 “ld option” -R(或-rpath)指定程序运行时库的路径,当指定多个动态库搜索路径时,路径之间用冒号":"分隔 -R或-rpath选项将指定的路径信息(DT_RPATH)保存在可执行文件中,运行时它会直接到该路径查找库 写入的DT_RPATH信息可用 ”readelf -d a.out“ 查看 如未找到被加载对象的RPATH,则递归查找其loader直到链条的顶端(可执行程序或被dlopen打开的对象)的RPATH
LD_RUN_PATH
该配置为 “environment variable” 在ELF 系统中, 对于native linker,如果未指定-rpath-link 和 -rpath,系统会使用该环境变量指定的路径
-L选项
该配置为 “gcc option” 用于设置动态库的搜索位置 仅在链接时生效,不影响程序执行时库的路径
LD_LIBRARY_PATH
该配置为 “environment variable” 全局有效,指定链接时和运行时库搜索路径
/lib
包含许多被 /bin/ 和 /sbin/ 中的程序使用的内核级库文件
/usr/lib
被/usr目录下的程序所使用的系统级共享库
/etc/ld.so.cache
ldconfig命令在默认搜寻目录/lib和/usr/lib以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如lib*.so*) 搜索结果按名字排序后写入缓存文件/etc/ld.so.cache 往/lib和/usr/lib里面加东西,是不用修改/etc/ld.so.conf的,但之后要调一下ldconfig 往其他目录,一定要修改/etc/ld.so.conf,然后再调用ldconfig
Linux library查找顺序(按优先级排列)
最新推荐文章于 2024-03-27 22:07:39 发布