1. 程式人生 > >在CentOS上更新GCC

在CentOS上更新GCC

1.我的機器原始是CentOS6.8 , 核心2.6.32. 在上一篇文章中已經簡單更新升級核心;Redhat下需要自己手動編譯安裝核心,網上資料很多,就不詳細描述了;【點選開啟連結

2.升級完核心就準備升級GCC了。 在安裝GCC之前需要更新幾個庫;

我的安裝更新列表如下: mpfr-3.1.5.tar.gz ; mpc-1.0.3.tar.gz ; gmp-6.1.1.tar.tar     下載地址:點選開啟連結

根據檔名找對應目錄下的即可;

3.安裝就沒什麼好說的了,都是套路安裝;./configure; make ; make install(需要注意,安裝注意順序,有依賴關係)

4.下載gcc; 我下載了當前最新的版本6.2;GCC7.0還在研發中; 【

點選開啟連結

5.編譯安裝GCC; 上面的那三個包我是預設安裝路徑的;所以在/usr/local/lib下; 我需要把該路徑加入到環境變數$LD_LIBRARY_PATH中;

編譯../configure --enable-threads=posix --disable-checking --disable-multilib --enable-languages=c,c++ ;

make(此處時間很長,大概需要1個小時左右); make install

預設安裝後,不需要更新環境變數$PATH;舊的gcc也不需要更改,直接預設安裝即可;因為路徑中已經有了,舊的也已經該路徑被覆蓋掉了;

執行:gcc -v 檢視當前版本;

然後我運行了之前舊的gcc編譯過的程式,發現無法啟動成功; 發現提示找不到64位的動態執行庫;我就又把/usr/local/lib64新增到$LD_LIBRARY_PATH環境變數中了,可能是在安裝gcc時環境變數被更改了;

再執行程式,發現等了一會(程式中包含ACE庫,Boost庫,定時器; jsoncpp; libconfig等第三方庫)報錯:

錯誤資訊:symbol lookup error:./TestProgram : undefined symbol: _ZN4Json6Reader5parseERKNSt7__cxx1112basi

找不到特定第三方庫的函式符號; 

nm XXX.so | grep 後,發現程式中的函式符合和動態庫的函式符號不一致;需要在新的gcc環境下重新編譯安裝第三方庫;

編譯安裝完成後,搞定;程式執行1天1夜,木毛病了;