靜態鏈接與動態鏈接庫的查找順序


靜態庫鏈接時搜索路徑順序:

1. ld會去找GCC命令中的參數-L
2. 再找gcc的環境變量LIBRARY_PATH
3. 再找內定目錄 /lib /usr/lib /usr/local/lib 這是當初compile gcc時寫在程序內的

動態鏈接時、執行時搜索路徑順序:

1. 編譯目標代碼時指定的動態庫搜索路徑
2. 環境變量LD_LIBRARY_PATH指定的動態庫搜索路徑
3. 配置文件/etc/ld.so.conf中指定的動態庫搜索路徑
4. 默認的動態庫搜索路徑/lib
5. 默認的動態庫搜索路徑/usr/lib

有關環境變量:
LIBRARY_PATH環境變量:指定程序靜態鏈接庫文件搜索路徑
LD_LIBRARY_PATH環境變量:指定程序動態鏈接庫文件搜索路徑

 

頭文件:

系統預設目錄

系統預設的頭文件目錄是通過環境變量C_INCLUDE_PATH來設置的,這個變量的值要在執行配置命令configure之前設置。

編譯器預設目錄

編譯器預設目錄由編譯器自己決定的,由程序代碼決定的,這是不需要工人設置或指定的。

可以總結出頭文件的查找路徑及優先順序:

1.如果源文件中使用雙引號來包含頭文件,則首先在源文件當前目錄查找頭文件。  
2.如果編譯時使用"-I/some/dir",則在/some/dir中查找。 
3.如果設置了環境變量C_INCLUDE_PATH,則在指定的目錄中查找。 
4.最后在編譯器預設的路徑中查找,這是不需要指定的,編譯時一定會在該路徑中搜索所需的頭文件。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM