Linux庫的搜尋路徑

2021-07-24 22:50:14 字數 598 閱讀 1070

1、linux預設庫搜尋路徑是/lib和/usr/lib;

2、/etc/ld.so.conf中指定的動態庫搜尋路徑;

這個檔案的每一行都是動態庫的搜尋路徑。

3、編譯目標**時指定的動態庫搜尋路徑;

在編譯目標**時指定程式的動態庫搜尋路徑。這是通過gcc 的引數"-wl,-rpath,"指定(如例3所示)

例如: gcc -o pos main.c -l. -lpos -wl,-rpath,./

4、在pkg_config_path中指定路徑;

有的庫檔案編譯安裝好之後會有乙個.pc檔案(例如:opencv.pc)

這個.pc檔案中寫明了庫檔案的安裝目錄,linux系統在編譯和鏈結的時候自動搜尋/usr/local/pkg檔案,搜尋所有的pkg路徑中是否有文需要的動態庫檔案;

5、在環境變數ld_library_path中新增路徑,ld_library_path是新增在預設路徑之外的動態庫檔案路徑。

例如:export ld_library_path=/root/test/env/lib

但是這樣做只在當前的終端有效,重啟之後會失效,因此最好將上面的命令新增到/etc/profile中。

參考:

Window和Linux動態庫搜尋路徑的次序

最近在做的專案中使用到動態庫的動態載入技術,windows和linux都提供了相應的函式來開啟動態庫 獲取函式指標和關閉動態庫 在開啟動態庫函式 dlopen或loadlibrary 中指定動態庫的檔名後,在程式執行時是以什麼次序來搜尋動態庫呢?linux下搜尋路徑的次序 1 elf可執行檔案中動態...

Linux標頭檔案庫檔案搜尋路徑

include的header檔案,鏈結資料庫,系統定義,總共有下列 指定gcc去那找。當初在編譯時指定的 在 gcc gcc collect2.c locatelib 寫在specs內的 後來用 d i l指定的 gcc環境變數設定 編譯的時候 ld.so的環境變數 這是run time的時候 一 ...

linux動態庫載入時搜尋路徑

對動態庫的實際應用還不太熟悉的讀者可能曾經遇到過類似 error while loading shared libraries 這樣的錯誤,這是典型的因為需要的動態庫不在動態鏈結器ld.so的搜尋路徑設定當中導致的。1 elf可執行檔案中動態段中dt rpath所指定的路徑。這實際上是通過一種不算很...