Centos7.6 默認安裝的gcc版本爲4.8.5,可經過命令gcc -v
查看,若是須要使用gcc的最新特性,則須要源碼安裝gcc最新版。html
gcc -v
輸出的信息,包括生成makefile
時候的configure,在步驟5能夠參考該配置。java
使用內建 specs。 COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/lto-wrapper 目標:x86_64-redhat-linux 配置爲:../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,objc,obj-c++,java,fortran,ada,go,lto --enable-plugin --enable-initfini-array --disable-libgcj --with-isl=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/isl-install --with-cloog=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/cloog-install --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux 線程模型:posix gcc 版本 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC)
GCC官網-->GCC Mirror Sites-->日本Site-->gcc-8.3.0.tar.gzlinux
1.yum安裝依賴包c++
# yum install -y gcc gcc-c++ gcc-gnat libgcc libgcc.i686 glibc-devel bison flex texinfo build-essential zlib-devel
bootstrap
舒適提示:若出現,致命錯誤: zlib.h:沒有那個文件或目錄。 這個錯誤是由於zlib包沒有安裝,安裝後問題便可解決。 但有一點請注意安裝命令是:yum install zlib-devel, 而非yum install zlib。
下載GCC最新依賴:緩存
$ ./contrib/download_prerequisites
app
2.安裝最新依賴到/usr/local
目錄下:ide
在普通用戶權限$
下便可:flex
cd gmp-6.1.0 ./configure --prefix=/usr/local/gmp-6.1.0 make && make install cd mpfr-3.1.4 ./configure --prefix=/usr/local/mpfr-3.1.4 --with-gmp=/usr/local/gmp-6.1.0 make && make install cd mpc-1.0.3 ./configure --prefix=/usr/local/mpc-1.0.3 --with-gmp=/usr/local/gmp-6.1.0 --with-mpfr=/usr/local/mpfr-3.1.4 make && make install
cd isl-0.18/ ./configure --prefix=/usr/local/isl-0.18 --with-gmp-prefix=/usr/local/gmp-6.1.0
在超級用戶root權限#
下:ui
# make && make install
注意:
上面安裝isl-0.18包,不能像其餘的將gmp包的路徑配置到--with-gmp
,而是配置到--with-gmp-prefix
下,否則會報錯:
可經過查看isl-0.18源代碼的configure
文件找到緣由:
3.將gcc最新依賴包添加到動態連接庫:
# vi /etc/ld.so.conf
從新搜索當前系統上全部庫文件搜索路徑下的庫文件,並生成緩存
# ldconfig -v
4.退到gcc-8.3.0
目錄,新建一個編譯目錄build
,用於存放編譯生成的文件:
$ mkdir build && cd build
5.進入編譯目錄build
後,經過gcc-8.3.0文件夾下的configure腳本生成makefile文件。
此時的設置能夠參考前面的gcc-4.8.5的配置,-prefix
配置make install的目錄(安裝目錄),--enable-languages
中去掉java(不支持),僅支持本機x64配置--disable-multilib
(須要支持x86就去掉)。
$ ../configure --prefix=/usr/local/gcc-8.3.0 --with-gmp=/usr/local/gmp-6.1.0 --with-mpfr=/usr/local/mpfr-3.1.4 --with-mpc=/usr/local/mpc-1.0.3 --with-isl=/usr/local/isl-0.18 --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,objc,obj-c++,fortran,ada,go,lto --enable-plugin --enable-initfini-array --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux --disable-multilib
配置完成後,進行make和make install。
# make && make install
Tips:默認編譯比較慢,能夠經過-j參數來增長參加編譯的cpu核心數N(雙核cpu:make -j 2),make -j N
,此處,N小於或等於每顆物理CPU中的核心數。
6.配置環境變量
# vi /etc/profile
在profile文件結尾加入一行:
export PATH=/usr/local/gcc-8.3.0/bin:$PATH
使其當即生效# source /etc/profile
7.使用gcc -v
檢查gcc版本,是否爲gcc-8.3.0
8.[補充]更新動態庫
否則會致使編譯成功的新程序,運行報「/lib64/libstdc++.so.6: version 'CXXABI_1.3.8' not found」
錯誤。
緣由是由於升級GCC後相應的動態庫沒有更新,致使新編譯器編譯程序成功,運行不成功。
(1)使用命令$ ls -l /usr/lib64/libstdc++.so.6
你會發現當前動態庫是一個軟連接:
(2)查看動態庫:
$ strings /usr/lib64/libstdc++.so.6.0.19 | grep CXXABI
可見,最高版本1.3.7,小於須要的1.3.8,須要手動更新動態庫。
(3)前面已經將gcc8.3.0安裝到/usr/local/gcc-8.3.0/
目錄,最新動態庫位於該目錄下,經過查找:
$ find /usr/local/gcc-8.3.0/ -name libstdc++.so.6*
(4)刪除舊連接:# rm -f /usr/lib64/libstdc++.so.6
(5)建立新連接:
# ln -s /usr/local/gcc-8.3.0/lib64/libstdc++.so.6.0.25 /usr/lib64/libstdc++.so.6
(6)從新查看動態庫$ strings /usr/lib64/libstdc++.so.6 | grep CXXABI