-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查找順序(按優先級排列)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.