我想使用 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
的自動建置(例如當您運行./configure
或cmake ..
然後)通常使用,這將繼續是本機編譯器的符號鏈接,因此這不會破壞事情。make
cc
就我個人而言,我甚至不想這樣做,因為我會我變得困惑。我更喜歡當它是交叉編譯器時,總是立即清楚我的編譯器的目標平台。