1. 程式人生 > >Centos6下編譯安裝gcc6.4.0

Centos6下編譯安裝gcc6.4.0

轉載自部落格園

https://www.cnblogs.com/milton/p/7653760.html

儲存學習用。

Centos6自帶的gcc4.4.7不支援c++11, 於是編譯安裝最新版的gcc

wget https://gmplib.org/download/gmp/gmp-6.1.2.tar.xz
tar xvf gmp-6.1.2.tar.xz 
cd gmp-6.1.2
./configure --prefix=/usr/local/gmp
make && make install

wget http://www.mpfr.org/mpfr-current/mpfr-3.1.6.tar.gz
tar xvf mpfr-3.1.6.tar.gz 
cd mpfr-3.1.6
./configure --prefix=/usr/local/mpfr --with-gmp=/usr/local/gmp
make && make install

wget ftp://ftp.gnu.org/gnu/mpc/mpc-1.0.3.tar.gz
tar xvf mpc-1.0.3.tar.gz 
cd mpc-1.0.3
./configure --prefix=/usr/local/mpc --with-gmp=/usr/local/gmp -with-mpfr=/usr/local/mpfr
make && make install

vi /etc/ld.so.conf
#增加以下三行
/usr/local/gmp/lib
/usr/local/mpfr/lib
/usr/local/mpc/lib
#
ldconfig -v

wget ftp://ftp.gnu.org/gnu/gcc/gcc-6.4.0/gcc-6.4.0.tar.gz
tar xvf gcc-6.4.0.tar.gz
./configure --enable-checking=release --enable-languages=c,c++ --disable-multilib --with-gmp=/usr/local/gmp --with-mpfr=/usr/local/mpfr --with-mpc=/usr/local/mpc
make -j2 # 這個過程比較慢, 大概要半個多小時
make install
# 改名 /usr/bin 下的 cpp, c++, gcc, g++, gcov 這些檔案, 再執行 gcc --version 就能看到新的版本資訊了
Update 2017-10-12: 在將 /usr/bin/gcc 更名後, link到這個檔案的 /usr/bin/cc 就失效了, 需要刪除, 並在 /usr/local/bin/ 下新建一個到gcc的cc軟鏈

到這裡都是轉載自部落格園作者Milton的內容。

更新升級後的gcc還需要修改連線。不然gcc --version還是以前的版本資訊。

按照大部分的文件接下來的切換gcc和g++版本使用的是

sudo updatedb
sudo update-alternatives --install /usr/bin/gcc gcc /opt/app/gcc6/bin/x86_64-pc-linux-gnu-gcc-6.4.0 10086 --slave /usr/bin/g++ g++ /opt/app/gcc6/bin/x86_64-pc-linux-gnu-g++

但是這個命令update-alternatives在目前的系統下無效(系統版本為centos6,沒有找到原因!)

因為本來就是為了更改/usr/bin/gcc和/usr/bin/g++軟連線

而且又不準備以後再切換回來原來的gcc版本所以就直接使用刪除掉原來的gcc/g++連線,重新建立連線到新安裝的gcc/g++位置,

本系統下安裝的gcc位置為 /opt/app/gcc6

sudo rm /usr/bin/gcc //刪除老的軟連線
sudo ln -s /opt/app/gcc6/bin/gcc /usr/bin/gcc //建立新的軟連線
sudo rm /usr/bin/g++ //刪除老的軟連線
sudo ln -s /opt/app/gcc6/bin/gcc /usr/bin/g++ //建立新的軟連線