Gcc

在 linux 上建構 gcc 交叉編譯器,我如何知道支持哪些“–target”以及指定它們的確切關鍵字?

  • December 1, 2020

我正在嘗試建構 gcc 編譯器來生成應該在 x86-64 機器上執行的執行檔。我實際上在我的電腦上使用現有的 64 位 gcc 編譯器。這是多餘的,但我這樣做是為了學習。

問題是,我不知道如何指定 –target 選項。我應該在那裡輸入什麼?只需鍵入“x86-64”就可以了嗎?

如果我希望交叉編譯器為 x86 機器生成執行檔並且應該在另一台 x86-64 位機器上執行以編譯原始碼,我應該使用什麼關鍵字來設置目標和主機?

我想知道是否有任何 gcc 手冊為主機和目標機器指定支持的架構以及指定它們的正確命令。

要了解受支持的目標架構,您應該查看您嘗試建構的任何 GCC 原始碼configureconfig.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),但如果您剛剛進入交叉編譯,您應該暫時將其放在一邊。

引用自:https://unix.stackexchange.com/questions/622389