原文 http://blog./note/install-gcc-5.2.0-from-source.html 記錄編譯GCC 5.2.0時(shí)遇到的問題和解決方法,,以備日后查詢。 平時(shí)使用的服務(wù)器是CentOS5,,自帶的gcc編譯器還是8年前發(fā)布的4.1.2版本,完全沒法寫C++11的代碼,,因?yàn)椴幌肷?jí)操作系統(tǒng),只好自己下載源碼編譯,。 安裝過程挺dan疼的,只好記錄下來,。 安裝依賴庫GCC依賴于gmp 4.2+, mpfr 2.4+和mpc 0.8+,,這里直接下載安裝最新的版本。 為了省事,,所有的庫都直接裝到/usr/local目錄下的對(duì)應(yīng)目錄。 安裝gmp 6.0wget https:///download/gmp/gmp-6.0.0a.tar.bz2 tar xvf gmp-6.0.0a.tar.bz2 cd gmp-6.0.0 ./configure make -j4 make install 安裝mpfr 3.1.3mpfr依賴于gmp,。 wget http://www./mpfr-current/mpfr-3.1.3.tar.bz2 tar xvf mpfr-3.1.3.tar.bz2 cd mpfr-3.1.3 ./configure --with-gmp-include=/usr/local/include --with-gmp-lib=/usr/local/lib make -j4 make install 安裝mpc 1.0.3mpc依賴于gmp和mpfr,。 wget ftp://ftp./gnu/mpc/mpc-1.0.3.tar.gz tar xvf mpc-1.0.3.tar.gz cd mpc-1.0.3 ./configure --with-mpfr-include=/usr/local/include --with-mpfr-lib=/usr/local/lib --with-gmp-include=/usr/local/include --with-gmp-lib=/usr/local/lib make -j4 make install 安裝GCC編譯建議先閱讀下官方的 安裝文檔 ,。 下載GCC并解壓,。 wget ftp://ftp./gnu/gcc/gcc-5.2.0/gcc-5.2.0.tar.bz2 tar xvf gcc-5.2.0.tar.bz2 cd gcc-5.2.0 先unset若干個(gè)系統(tǒng)變量,,以免出現(xiàn)某些宏找不到的情況,。 unset CPLUS_INCLUDE_PATH LIBRARY_PATH 配置GCC ./configure --with-gmp-include=/usr/local/include --with-gmp-lib=/usr/local/lib --with-mpfr-include=/usr/local/include --with-mpfr-lib=/usr/local/lib --with-mpc-include=/usr/local/include --with-mpc-lib=/usr/local/lib --enable-languages=c,c++ --enable-threads=posix --disable-multilib 詳細(xì)的配置項(xiàng)說明可參考 安裝文檔 ,,這里只編譯c和c++的編譯器,。 然后 測(cè)試先安裝dejagnu: 然后運(yùn)行如下命令: make -j8 check-gcc 查看測(cè)試結(jié)果: ./contrib/test_summary 安裝如果編譯順利通過, gcc和g++默認(rèn)被安裝到 記得更下下動(dòng)態(tài)庫緩存。 ldconfig 可能遇到的問題XXXX not defined遇到某個(gè)宏沒有定義的情況,,先unset braced spec is invalid很dan疼的一個(gè)問題,,搜遍了全網(wǎng)也沒見有比較正式的解決方案。目前看上去比較靠譜的方法可參考 這里 ,,具體操作就是手動(dòng)改一下某個(gè)specs文件。 我這里是 測(cè)試C++11寫一個(gè)腦殘的cpp測(cè)試下新安裝的編譯器,。 #include <atomic> #include <iostream> using namespace std; int main() { atomic<long long> num(1L << 14); cout << ++num << endl; } 編譯并運(yùn)行: /usr/local/bin/g++ -std=c++11 b.cpp -o b LD_LIBRARY_PATH=/usr/local/lib64 ./b
|
|