在交叉編譯的時候我們需要用到其他的庫,在config時候可以通過“-I”來指定標頭檔目錄,但是每次都需要設定的話難免有些麻煩,找到一個簡單的方法。看下文的紅色部分。
有大量的環境變數可供設定以影響 GCC 編譯器的方式。利用這些變數的控制也可使用合適的命令列選項。一些環境變數設定在目錄名列表中。這些名字和
PATH 環境變數使用的格式相同。特殊字元 PATH_SEPARATOR (安裝編譯器的時候定義)用在目錄名之間。在 UNIX
系統中,分隔字元是冒號,而 Windows 系統中為分號。
C_INCLUDE_PATH
編譯 C 程式時使用該環境變數。該環境變數指定一個或多個目錄名列表,尋找標頭檔,就好像在命令列中指定 -isystem 選項一樣。會首先尋找 -isystem 指定的所有目錄。
也見 CPATH 、 CPLUS_INCLUDE_PATH 和 OBJC_INCLUDE_PATH 。
COMPILER_PATH
該環境變數指定一個或多個目錄名列表,如果沒有指定 GCC_EXEC_PREFIX 定位子程式,編譯器會在此尋找它的子程式。
也見 LIBRARY_PATH 、 GCC_EXEC_PREFIX 和 -B 命令列選項。
CPATH 編譯 C 、 C++ 和 Objective-C 程式時使用該環境變數。該環境變數指定一個或多個目錄名列表,尋找標頭檔,就好像在命令列中指定 -l 選項一樣。會首先尋找 -l 指定的所有目錄。
也見 C_INCLUDE_PATH 、 CPLUS_INCLUDE_PATH 和 OBJC_INCLUDE_PATH 。
CPLUS_INCLUDE_PATH 編譯 C++ 程式時使用該環境變數。該環境變數指定一個或多個目錄名列表,尋找標頭檔,就好像在命令列中指定 -isystem 選項一樣。會首先尋找 -isystem 指定的所有目錄。
也見 CPATH 、 C_INCLUDE_PATH 和 OBJC_INCLUDE_PATH 。
DEPENDENCIES_OUTPUT 為檔案名稱設定該環境變數會讓預先處理程式將基於依賴關係的 makefile 規則寫入檔案。不會包括系統標頭檔名字。
如果環境變數設定為單名,被看作是檔案名稱字,而依賴關係規則的名字來自源檔案名稱字。如果定義中有兩個名字,則第二個名字是用作依賴關係規則的目標名。
設定該環境變數的結果和使用命令列選項 -MM 、 -MF 和 -MT 的組合是一樣的。也見 SUNPRO_DEPENDENCIES 。
GCC_EXEC_PREFIX 如果定義了該環境變數,它會作為編譯器執行的所有子程式名字的首碼。例如,如果將變數設定為 testver
而不是尋找 as ,彙編器首先會在名字testveras
下尋找。如果在此沒有找到,編譯器會繼續根據它的普通名進行尋找。可在首碼名中使用斜線指出路徑名。
GCC_EXEC_PREFIX 的預設設定為 prefix
/lib/gcc-lib/ ,這裡的 prefix
是安裝編譯器時 configure 指令碼指定的名字。該首碼也用於定位標準串連程式檔案,包含進來作為可執行程式的一部分。
如果使用 -B 命令列選項,會重寫該設定。也見 COMPILER_PATH 。
LANG 該環境變數用於指出編譯器使用的字元集,可建立寬字元文字、串文字和注釋。
定義 LANG 為 C-JIS ,指出預先處理程式將多位元組字元按照 JIS (日語工業標準)字元進行解釋。 C-SJIS 可用來指出 Shift -JIS 字元而 C-EUCJP 指出日文 EUC 。
如果沒有定義 LANG ,或定義為不可識別,函數 mblen() 被用來確定字元寬度,而 mbtowc() 用來將多位元組序列轉換為寬字元。
LC_ALL 如果設定,該環境變數的值重寫 LC_MESSAGES 和 LC_CTYPE 的所有設定。
LC_CTYPE
該環境變數指出引用串中定義的多位元組字元的字元分類。主要用於確定字串的字元邊界,字元編碼需要用引號或轉義符,可被錯誤地解釋為字串的結尾或特殊字
符串。對 Australian English ,可將它設定為 en_AU ; 對 Mexican Spanish ,可將它設定為
es_MX。如果沒有設定該變數,預設為 LANG 變數的值,或如果沒有設定 LANG ,那就使用 C 英語行為。也見 LC_ALL 。
LC_MESSAGES 該環境變數指出編譯器使用何種語言發出診斷訊息。對 Australian English ,可設定為 en_AU ;
對 MexicanSpanish ,可設定為 es_MX 。如果變數沒有設定,使用 LANG 變數的預設值,或如果沒有設定 LANG
,那就使用 C英語行為。也見 LC_ALL 。
LD_LIBRARY_PATH 該環境變數不會影響編譯器,但程式啟動並執行時候會有影響。變數指定一個目錄列表,程式會尋找該列表定位共用庫。只有當未在編譯器的目錄中找到共用庫的時候,執行程式必須設定該變數。
LD_RUN_PATH 該環境變數不會影響編譯器,但程式啟動並執行時候會有影響。該變數在運行時指出檔案的名字,啟動並執行程式可由此得到它的符號名字和地址。地址不會重新載入,因而可能符號引用其他檔案中的絕對位址。這和 ld 工具使用 -R 選項完全一樣。
LIBRARY_PATH 該環境變數可設定為一個或多個目錄名字列表,串連程式會搜尋該目錄,以尋找特殊串連程式檔案,和由 -l (字母 l
)命令列選項指定名字的庫。
由 -L 命令列選項指定的目錄在環境變數的前面,首先被尋找。也見 COMPILER_PATH 。
OBJC_INCLUDE_PATH 在編譯 Objective-C 程式的時候使用該環境變數。一個或多個目錄名的列表由環境變數指定,用來尋找標頭檔,就好像在命令列中指定 -isystem 選項一樣。所有由 -isystem 選項指定的目錄會首先被尋找。
也見 CPATH 、 CPLUS_INCLUDE_PATH 和 C_INCLUDE_PATH 。
SUNPRO_OUTPUT 為檔案名稱設定該環境變數會令預先處理程式將基於依賴關係的 makefile 規則寫入檔案。會包含系統標頭檔名。
如果環境變數被設定為單個名字,它將會被當作檔案名稱,依賴關係規則中的名字將由源檔案的名字中獲得。如果定義中有兩個名字,第二個名字就是依賴關係規則中的目標名。
設定該環境變數的結果與在命令列中使用參數 -M 、 -MF 和 -MT 的效果一樣。參見 DEPENDENCIES_OUTPUT 。
TMPDIR 這個變數包含了供編譯器存放臨時工作檔案的目錄的路徑名。這些檔案通常在編譯過程結束時被刪除。這種檔案的一個例子就是由預先處理程式輸出並輸入給編譯器的檔案。