GCC介紹
GCC是GNU編譯器套件,是由GNU開發的編程語言的編譯器。GNU編譯器套件包括C、C++、Objective-C、Fortran、Java、Ada和Go語言及這些語言的庫,使用gcc編譯程序時,編譯過程可以為4個階段:預處理(Pre-Processing)、編譯(Compiling)、匯編(Assembling)、鏈接(Linking)
由於 Linux 操作系統的自由開源,在其基礎上衍生出了很多不同的Linux操作系統,如CentOS、Ubuntu、Debian等,這些Linux發行版中,大多數都默認裝有GCC編譯器,但是在CentOS8中並沒有安裝,這就需要自己來安裝了
下面介紹在線安裝、離線安裝及版本升級方法,安裝系統是CentOS 8.3,其它版本可能略有不同
在線安裝
在線安裝是一種極其簡單的“傻瓜式”安裝方法,但是其默認根據當前系統版本所對應的gcc進行安裝,而非選擇最新版gcc進行安裝
-
確認當前系統是否已安裝gcc,執行以下命令
rpm -q gcc #或者輸入查看gcc版本的命令 gcc -v
-
使用命令安裝
dnf install gcc gcc-c++ -y -
等待安裝結束后再次輸入查看gcc版本的命令,出現gcc版本信息就說明安裝成功啦
rpm -q gcc #輸入查看gcc版本的命令 gcc --verson gcc -v g++ -v
版本升級
將gcc-8.3升級到gcc10.2,若未安裝gcc,不能使用該方法直接安裝gcc,沒有舊版本的gcc,編譯時會失敗的,會報錯configure: error: no acceptable C compiler found in $PATH
-
下載gcc-10.2的安裝包,若下載失敗可以通過國內鏡像站下載,在華為、阿里、清華等鏡像站搜索GNU,選擇需要的版本
wget https://gcc.gnu.org/pub/gcc/releases/gcc-10.2.0/gcc-10.2.0.tar.gz
-
解壓並進入目錄
tar -zxf gcc-10.2.0.tar.gz cd gcc-10.2.0
-
執行以下命令,下載安裝gcc的依賴包,由於網絡原因,下載時間可能會有點久,請耐心等待
./contrib/download_prerequisites
-
由於gcc編譯器支持多種語言的編譯,而實際情況中可能只需要編譯 1~2 種編程語言,因此需要對其進行必要的配置。通過執行如下指令,可以配置gcc支持編譯C、C++
./configure --enable-checking=release --enable-languages=c,c++ --disable-multilib -
使用make命令來編譯gcc源程序,若提示命令不存在,先安裝make,執行命令
dnf install make -y,編譯時間會很長,本次安裝耗時近2小時,建議選擇合適的時間進行編譯make -
編譯完成后安裝gcc
make install -
安裝完成后重啟服務器,然后查看gcc版本
# 查看gcc版本是否變更 gcc --version gcc -v g++ -v
重啟服務器后可以發現gcc成功從8.3.1升級到10.2.0,若服務器未重啟版本不會變更,查看還是返回舊版本信息
離線安裝
在工作中,有時會在內網進行工作,無法連接外網,不得不采取離線安裝方式,本次離線安裝也是采用根據系統版本選擇對應的gcc進行安裝
-
首先查看系統相關版本信息
# 查看系統版本信息 cat /etc/centos-release # 查看Linux版本信息 cat /proc/version # 此命令輸出結果包含了系統內核版本、gcc編譯器版本和Red Hat版本號
-
根據上步獲得的信息,使用可訪問外網的電腦下載相關gcc的rpm包,下載地址:點擊此處進入
-
進入詳情頁,頁面顯示相關描述信息、下載地址、所需依賴等,依賴如下,並非所有依賴都要安裝,可以參考別人版本安裝的rpm,改下版本信息后進行下載,但是此方式並能保證修改是正確的!另外若不知道安裝GCC到底需要哪些依賴的rpm,就直接下個gcc-c++的rpm,看提示需要哪些依賴關系包,然后再下載相關依賴
-
下載gcc-c++的rpm包,在詳情頁,訪問下載地址即可
-
將下載的rpm包上傳到服務器上,進行安裝
# 新建目錄,將rpm包統一放到此目錄下 mkdir gcc cd gcc # 安裝rpm包 rpm -ivh gcc-c++-8.3.1-5.1.el8.x86_64.rpm
-
根據上一步獲得依賴提示,回到網站中進入gcc-c++-8.3.1-5.1.el8.x86_64.rpm詳情頁,下載依賴后上傳到服務器安裝
# 逐條安裝 rpm -ivh libmpc-1.0.2-9.el8.x86_64.rpm rpm -ivh libstdc++-devel-8.3.1-5.1.el8.x86_64.rpm rpm -ivh gcc-8.3.1-5.1.el8.x86_64.rpm # 或者直接合並為一條命令 rpm -ivh gcc-8.3.1-5.1.el8.x86_64.rpm libmpc-1.0.2-9.el8.x86_64.rpm libstdc++-devel-8.3.1-5.1.el8.x86_64.rpm
-
同樣根據依賴提示,再次回到網站中進入gcc-8.3.1-5.1.el8.x86_64.rpm詳情頁,下載依賴后上傳服務器安裝,注意進入相應的rpm包頁面下載依賴,否則依賴找不到
# 逐條安裝 rpm -ivh cpp-8.3.1-5.1.el8.x86_64.rpm rpm -ivh isl-0.16.1-6.el8.x86_64.rpm rpm -ivh glibc-devel-2.28-127.el8.x86_64.rpm # 或者合並為一條命令 rpm -ivh cpp-8.3.1-5.1.el8.x86_64.rpm isl-0.16.1-6.el8.x86_64.rpm glibc-devel-2.28-127.el8.x86_64.rpm
-
同樣根據依賴提示,回到網站中進入glibc-devel-2.28-127.el8.x86_64.rpm詳情頁,下載依賴后上傳服務器安裝
# 逐條安裝 rpm -ivh glibc-headers-2.28-127.el8.x86_64.rpm rpm -ivh rpm -ivh libxcrypt-devel-4.1.1-4.el8.x86_64.rpm # 或者合並為一條命令 rpm -ivh glibc-headers-2.28-127.el8.x86_64.rpm libxcrypt-devel-4.1.1-4.el8.x86_64.rpm
-
還是根據依賴提示,回到網站中進入glibc-headers-2.28-127.el8.x86_64.rpm詳情頁,下載依賴后上傳服務器安裝
# 安裝glibc-headers依賴 rpm -ivh kernel-headers-4.18.0-240.15.1.el8_3.x86_64.rpm # 安裝glibc-headers rpm -ivh glibc-headers-2.28-127.el8.x86_64.rpm # 安裝libxcrypt-devel rpm -ivh libxcrypt-devel-4.1.1-4.el8.x86_64.rpm -
這里出現了個小狀況狂,安裝的兩個rpm包相互依賴,只能將一方跳過依賴並強行安裝了
# 強行安裝libxcrypt-devel rpm -ivh libxcrypt-devel-4.1.1-4.el8.x86_64.rpm --nodeps --force # 安裝cpp、isl、glibc-devel rpm -ivh cpp-8.3.1-5.1.el8.x86_64.rpm isl-0.16.1-6.el8.x86_64.rpm glibc-devel-2.28-127.el8.x86_64.rpm
-
總算將所有依賴安裝完成,最后再安裝gcc和gcc-c++
# 安裝gcc rpm -ivh gcc-8.3.1-5.1.el8.x86_64.rpm # 安裝gcc-c++ rpm -ivh gcc-c++-8.3.1-5.1.el8.x86_64.rpm
-
驗證是否安裝成功
#查看gcc版本 gcc --verson #或者 gcc -v g++ -v
通過驗證gcc安裝成功
想要自己解決所需的依賴關系,想到了這種有點繁瑣的方式,知道這些所需的依賴關系后按反向順序安裝或者將所有的rpm包都強制安裝就能很快完成啦!
本次安裝用到了以下10個rpm包
kernel-headers-4.18.0-240.15.1.el8_3.x86_64.rpm glibc-headers-2.28-127.el8.x86_64.rpm libxcrypt-devel-4.1.1-4.el8.x86_64.rpm glibc-devel-2.28-127.el8.x86_64.rpm isl-0.16.1-6.el8.x86_64.rpm cpp-8.3.1-5.1.el8.x86_64.rpm libstdc++-devel-8.3.1-5.1.el8.x86_64.rpm libmpc-1.0.2-9.el8.x86_64.rpm gcc-8.3.1-5.1.el8.x86_64.rpm gcc-c++-8.3.1-5.1.el8.x86_64當知道並獲得所需的依賴包時,兩步即可安裝完成
# 1.上傳rpm包 # 2.忽略依賴強制安裝所有rpm包 rpm -ivh *.rpm --nodeps --force
其實還有一種方式獲取gcc依賴,使用在線安裝時已經有顯示需要哪些rpm包,然后找到這些rpm包下載后就可以安裝啦
在網上找個相關資源很多都是需要積分付費的,自己通過這種方式也安裝成功了,免費提供下gcc-8.3.1及依賴包,下載地址:點擊此處,密碼:gx09
