linux下 gcc 預設搜尋路徑

2021-06-22 02:07:37 字數 3628 閱讀 4652

有大量的環境變數可供設定以影響 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++ 程式時使用該環境變數。該環境變 量指定乙個或多個目錄名列表,查詢標頭檔案,就好像在命令列中指定

dependencies_output

為檔名設定該環境變數會讓預處理程式將 基於依賴關係的 makefile 規則寫入檔案。不會包括系統標頭檔案名字。如果環境變數設定為單名,被看作是檔案名字,而依賴關係規則的名 字來自原始檔名字。如果定義中有兩個名字,則第二個名字是用作依賴關係規則的目標名。設定該環境變數的結果和使用命令列選項

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

這個變數包含了供編譯程式存放臨時工作檔案的目錄的路徑 名。這些檔案通常在編譯過程結束時被刪除。這種檔案的乙個例子就是由預處理程式輸出並輸入給編譯程式的檔案。

gcc 在編譯時如何去尋找所需要的標頭檔案 :

庫檔案但是如果裝gcc的時候,是有給定的prefix的話,那麼就是

cos()等函式庫的選項要多加 -lm

動態庫的搜尋路徑搜尋的先後順序是:

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

2 環境變數ld_library_path指定的動態庫搜尋路徑;

3 配置檔案/etc/ld.so.conf中指定的動態庫搜尋路徑;

4 預設的動態庫搜尋路徑/lib;

5 預設的動態庫搜尋路徑/usr/lib。

GCC預設的搜尋路徑是什麼?

gcc是如何搜尋標頭檔案的?c語言程式設計時,發現細節的魅力很大。較為詳細了看了一下關於include的知識,發現了幾點新知 1.include 頭檔名 和include 頭檔名 如 include和include stdio.h 前者 使用 來引用stdio.h檔案,是首先檢索標準路徑,看看這些資...

gcc搜尋路徑

一 標頭檔案 搜尋會從 i開始 環境變數 c include path,cplus include path,objc include path 內定目錄 echo gcc wp,v x c fsyntax only 二 編譯時庫檔案 gcc會去找 l 再找gcc的環境變數library path ...

linux下gcc預設搜尋標頭檔案及庫檔案的路徑

一 標頭檔案 gcc 在編譯時如何去尋找所需要的標頭檔案 所以header file的搜尋會從 i開始 然後找gcc的環境變數c include path,cplus include path,objc include path 再找內定目錄 usr include usr local includ...