[Linux] 非root安裝GCC9.1.0


說明

一般Linux系統自帶或公共的GCC版本都很低,如目前我們的服務器版本的GCC還停留在gcc-4.9.3,而官網已到達9.2版本(下載http://ftp.gnu.org/gnu/gcc/
,有些項目編譯時需要更高版本的GCC,這時就需要自己額外安裝一個了。

網上關於非 root用戶的教程有很多,但大多數都很舊且不靠譜,我找到了幾個比較實用的,總結一下,親測有效。

安裝GCC主要依賴三個庫:GMP, MPFRMPC,另還有個ISL庫(不知是否是必需)。之前的舊版本可能需要手動依次安裝這些依賴庫,但較新的版本其實只需要在GCC目錄下運行./contrib/download_prerequisites命令就可以自動下載這幾個組件,也不用擔心版本問題。

另外一點和其他軟件不同的地方在於,GCC不能直接在其源碼中編譯,而是在它的目錄下新建一個文件夾,然后進入這個文件夾配置並編譯安裝。了解了這兩點,安裝GCC就一路暢通,不過編譯很慢,耗時2小時以上。
解壓后安裝依賴

安裝

假設我現在的路徑為:/path/to/software

wget http://ftp.gnu.org/gnu/gcc/gcc-9.1.0/gcc-9.1.0.tar.gz
tar -xvf gcc-9.1.0.tar.gz
mkdir gcc9  #作為安裝路徑
cd gcc-9.1.0
./contrib/download_prerequisites 
#等待安裝好依賴
mkdir gcc-9.1.0 #作為編譯路徑,不能直接在源碼中編譯
../configure --disable-checking --enable-languages=c,c++ --disable-multilib --prefix=/path/to/software/gcc9 --enable-threads=posix
#經測試,用此gcc版本編譯R時,會報錯無Fortran語言,因此這里加入該語言,gcc編譯的語言還有很多,可以寫all,但會耗時,更多內容參考官方文檔。
#../configure --disable-checking --enable-languages=c,c++,fortran --disable-multilib --prefix=/path/to/software/gcc9 --enable-threads=posix
make -j32 && make install

安裝成功應該包括以下文件目錄:
image.png

添加到環境變量,就能覆蓋舊版本了。

#路徑要在環境變量前
export PATH=/path/to/software/gcc9/bin:/path/to/software/gcc9/lib64:$PATH
export LD_LIBRARY_PATH=/path/to/software/gcc9/lib/:$LD_LIBRARY_PATH

補充環境變量設置

1.gcc/g++等程序本身的路徑
export PATH=$PATH:/install/bin
#注:/install為安裝目錄,下同

2.gcc頭文件路徑
export C_INCLUDE_PATH=$C_INCLUDE_PATH:/install/include

3.g++頭文件路徑
export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/install/include

4.動態鏈接庫路徑
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/install/lib64

5.靜態庫路徑
export LIBRARY_PATH=$LIBRARY_PATH:/install/lib

GCC編譯過程

共四步,以編譯C語言程序(.c)為例:

  • 預編譯:預處理生成.i文件。
  • 編譯:編譯成匯編語言,生成.S文件。
  • 匯編:匯編后生成目標文件.o文件。
  • 鏈接:將各個模塊的.o文件鏈接起來生成一個可執行文件。

Ref: http://www.xieqiang.site/2017/07/31/install-gcc-5.4-without-root/
https://blog.csdn.net/u011719045/article/details/82317695
https://www.cnblogs.com/freeopen/p/5482902.html
https://www.cnblogs.com/jack-hzm/p/9978440.html


免責聲明!

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



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