靜態庫鏈接時搜索路徑順序:
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.最后在編譯器預設的路徑中查找,這是不需要指定的,編譯時一定會在該路徑中搜索所需的頭文件。