如何切換arm-linux-gnueabihf-gcc的版本?

如何切換arm-linux-gnueabihf-gcc的版本?

我想使用 5 版arm-linux-gnueabihf-gcc

所以我透過以下方式安裝了它:

apt-get install gcc-5-arm-linux-gnueabihf

但現在當我gcc --version這樣做時,它會告訴我它是版本 7。

我該如何告訴它使用舊版本?

或者我必須完全卸載較新的版本嗎?

答案1

您可以運行arm-linux-gnueabihf-gcc-5而不是gcc.

這個文件列表gcc-5-arm-linux-gnueabihf包括該包中放置的其他工具的名稱/usr/bin,您可能會發現這些工具很有用。 (您沒有提到您正在運行哪個版本,但我猜它是 18.04,因為該版本是一個流行的 LTS,並且預設為版本 7。)

請注意,即使您想使用預設版本,除非您更改了/usr/bin/gcc指向的內容(我不建議),該gcc命令也會執行一個 GCC 編譯器,該編譯器會生成本國的可執行檔。除非您的 Ubuntu 系統在 ARM 上運行,否則這不是 ARM 編譯器。若要執行 armhf 的 GCC 交叉編譯器的預設版本,請使用arm-linux-gnueabihf-gcc(並參見這個文件列表)。

本機編譯器和交叉編譯器的多個版本可以同時安裝在同一系統上。然而,此命令通常僅呼叫本機 GCC 編譯器的預設版本gcc。其他指令具有工具鏈前綴、版本後綴或(在本例中)兩者。情況是這樣的甚至當該非預設編譯器是系統上安裝的唯一編譯器。

如果你真的必須調用gcc編譯器......

如果您需要gcc呼叫該編譯器,因為某些其他建置工具(例如make正在呼叫)gcc,最好的方法通常是重新配置該其他工具或將CC環境變數設為您想要的編譯器。僅僅運行gcc您需要的編譯器也可能不是充足的,因為其他工具的名稱仍將執行本機版本。

話雖如此,假設你的 Ubuntu 系統是不是一個armhf系統,但你仍然真的想要 gcc要運行arm-linux-gnueabihf-gcc-5交叉編譯器,您有幾個選擇。您可以替換/usr/bin/gcc符號連結(在 18.04 上連結到gcc-7),但我建議不要這樣做。這樣做可能會破壞任何假定gcc是本機編譯器的內容,並且可能會幹擾或被未來的套件管理操作撤銷。

相反,您可以將gcc符號連結放入arm-linux-gnueabihf-gcc-5使用者的私有 bin 目錄中~/bin。如果該目錄存在,預設的每個使用者檔案會在您登入時~/.profile 新增該目錄。您未自訂$PATH的自動建置(例如當您運行./configurecmake ..然後)通常使用,這將繼續是本機編譯器的符號鏈接,因此這不會破壞事情。makecc

就我個人而言,我甚至不想這樣做,因為我會變得困惑。我更喜歡當它是交叉編譯器時,總是立即清楚我的編譯器的目標平台。

相關內容