Gcc對頭文件與庫文件的搜索路徑


一、簡介

對頭文件與庫文件的搜索路徑不太清楚,編譯、運行時老碰到問題,ldd查看程序的鏈接時,總是出現unkown鏈接.

 

二、頭文件

gcc 在編譯時尋找所需要的頭文件 :

1)搜尋會從-I開始

2)然后找gcc的環境變量 C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC_INCLUDE_PATH (這些變量在windows下對應的是include環境變量)

3)再找內定目錄

/usr/include

/usr/local/include

/usr/lib/gcc-lib/i386-linux/2.95.2/include

/usr/lib/gcc-lib/i386-linux/2.95.2/../../../../include/g++-3

/usr/lib/gcc-lib/i386-linux/2.95.2/../../../../i386-linux/include

庫文件, 如果裝gcc的時候,有給定prefix,那么就是

/usr/include 

prefix/include 

prefix/xxx-xxx-xxx-gnulibc/include 

prefix/lib/gcc-lib/xxxx-xxx-xxx-gnulibc/2.8.1/include

 

三、庫文件

編譯的時候:

1)gcc會去找-L

2)再找gcc的環境變量LIBRARY_PATH

3)再找內定目錄 /lib:/usr/lib: /usr/local/lib:這是當初compile gcc時寫在程序內的

 

四、運行時動態庫的搜索路徑

1、在配置文件/etc/ld.so.conf中指定動態庫搜索路徑

2、通過環境變量LD_LIBRARY_PATH指定動態庫搜索路徑(當通過該環境變量指定多個動態庫搜索路徑,路徑之間用冒號":"分隔)

注意:HP-UX對應的SHLIB_PATH環境變量,AIX對應的是LIBPATH環境變量,windows對應的是lib環境變量

3、在編譯目標代碼時指定該程序的動態庫搜索路徑(還可以在編譯目標代碼時指定程序的動態庫搜索路徑)

這是通過gcc 的參數"-Wl,-rpath,"指定。當指定多個動態庫搜索路徑時,路徑之間用冒號""分隔.

4、默認的動態庫搜索路徑/lib、/usr/lib.,動態庫的搜索路徑搜索的先后順序是:

1)編譯目標代碼時指定的動態庫搜索路徑; 

2)環境變量LD_LIBRARY_PATH指定的動態庫搜索路徑; 

3)配置文件/etc/ld.so.conf中指定的動態庫搜索路徑; 

4)默認的動態庫搜索路徑/lib  /usr/lib。

 

五、常用環境變量

1)LIBRARY_PATH和LD_LIBRARY_PATH


免責聲明!

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



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