Gcc
在 linux 上建構 gcc 交叉編譯器,我如何知道支持哪些“–target”以及指定它們的確切關鍵字?
我正在嘗試建構 gcc 編譯器來生成應該在 x86-64 機器上執行的執行檔。我實際上在我的電腦上使用現有的 64 位 gcc 編譯器。這是多餘的,但我這樣做是為了學習。
問題是,我不知道如何指定 –target 選項。我應該在那裡輸入什麼?只需鍵入“x86-64”就可以了嗎?
如果我希望交叉編譯器為 x86 機器生成執行檔並且應該在另一台 x86-64 位機器上執行以編譯原始碼,我應該使用什麼關鍵字來設置目標和主機?
我想知道是否有任何 gcc 手冊為主機和目標機器指定支持的架構以及指定它們的正確命令。
要了解受支持的目標架構,您應該查看您嘗試建構的任何 GCC 原始碼
configure
。config.sub
您還需要匹配的 binutils 和 C 庫;GCC 安裝手冊提供了配置和建構編譯器所涉及的步驟的詳細資訊。除了架構之外,您還需要決定以哪個作業系統和庫為目標;因此,對於在 x86_64 上帶有 GNU C 庫的 Linux,您可以使用
--target=x86_64-linux-gnu
. 存在較短的別名,您可以執行config.sub
以確定它們對應的內容:$ src/config.sub x86_64-linux x86_64-pc-linux-gnu
所以
./configure --target=x86_64-linux
會等價於x86_64-linux-gnu
,也就是等價於x86_64-pc-linux-gnu
。配置和建構後,您將獲得一個編譯器,該編譯器建構可以在配置的目標上執行的程序;編譯器本身將在配置的主機上執行。一般來說,您應該只指定目標;可以交叉建構一個交叉編譯器(這被稱為Canadian cross),但如果您剛剛進入交叉編譯,您應該暫時將其放在一邊。