修改默認gcc版本


background

在以5.3為內核的ubuntu中編譯3.10的內核時,出現:
include/linux/compiler-gcc.h:106:30: fatal error: linux/compiler-gcc5.h錯誤
嘗試了網上說的將當前內核(5.3)的compiler-gcc.h復制為被編譯內核(3.10)的include/linux/compiler-gcc5.h,但是又報了新的錯誤,因此此條路作罷.

在stackoverflow里查找問題,有人提到是gcc版本的問題,gcc-4.8支持3.x的編譯,而我的本地gcc版本為5.0.但是我又不想卸載掉我的gcc-5.0,怕影響當前環境中的其它軟件的編譯,因此找了一下如何在Linux上安裝多個gcc版本,並修改默認gcc版本.這樣就可以在編譯3.10的內核時使用gcc-4.8,編譯完成之后將gcc切換回gcc-5.0.

steps

# 安裝gcc-4.8
sudo apt install gcc-4.8
# 設置gcc-4.8的優先級
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 40
# 設置gcc-5的優先級
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 50
# 修改系統中的默認gcc版本
sudo update-alternatives --config gcc

說明: 執行sudo update-alternatives --config gcc之后,就會跳出選項,輸入gcc版本對應的數字,就會選擇對應的gcc版本作為默認版本.

extra knowledge

上述update-alternatives的用於修改系統中命令的實際執行程序.

--install <鏈接> <名稱> <路徑> <優先級> 在系統中加入一組候選項

<鏈接>: /usr/bin/gcc 為系統中某命令的具體路徑,本文中指的就是在終端中執行gcc命令,會調用/usr/bin/gcc.

<名稱>: gcc 為在終端中執行的具體命令,本文中指gcc

<路徑>: /usr/bin/gcc-4.8和/usr/bin/gcc-5 為在終端中輸入命令后,具體的執行程序的路徑.本文中指在終端中輸入gcc,具體調用的程序路徑

<優先級>: 40和50,是一個整數,在自動模式下,這個數字越高的選項,其優先級也就越高。

--config <名稱> 列出 <名稱> 替換組中的可選項,並就使用其中哪一個,征詢用戶的意見。

<名稱>: 即上面說的終端中的具體命令, gcc

Reference

  1. compile-an-old-linux-kernel-on-ubuntu-16-04-lts

  2. 編譯Linux內核出現include/linux/compiler-gcc.h:106:30: fatal error: linux/compiler-gcc5.h錯誤


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM