整個過程耗時 >4小時;
升級之后,gcc可能無法正常使用,出現錯誤:找不到編譯器。
1 查看gcc版本
[root@testtest ~]# gcc -v
Using built-in specs.
Target: x86_64-redhat-linux
Configured with: ../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-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk --disable-dssi --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre --enable-libgcj-multifile --enable-java-maintainer-mode --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --disable-libjava-multilib --with-ppl --with-cloog --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux
Thread model: posix
gcc version 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC)
2 下載gcc
wget ftp://ftp.irisa.fr/pub/mirrors/gcc.gnu.org/gcc/releases/gcc-8.3.0/gcc-8.3.0.tar.gz
109MB
3 解壓:
tar -zxvf gcc-8.3.0.tar.gz
4 進入目錄
cd gcc-8.3.0
5 配置
./configure --prefix=/usr/local/gcc-8.3.0 --enable-checking=release --enable-languages=c,c++,gfortran --disable-multilib
注意,如果出現錯誤以下錯誤: configure: error: Building GCC requires GMP 4.2+, MPFR 2.4.0+ and MPC 0.8.0+.
請看文章底部的錯誤解決方法。
6 編譯
make
7 安裝
make install
8 查看版本
gcc -v
如果發現版本沒有變化,
可以刪除舊版本的gcc,如果舊版的是用yum安裝的,可以使用 yum remove gcc。
然后把新安裝的gcc的bin目錄(/usr/local/gcc-8.3.0/bin)添加到環境變量(PATH)中,/etc/profile 文件中。
-
讓/etc/profile文件修改后立即生效 ,可以使用如下命令:
-
# source /etc/profile
再查看版本,是否已變成最新安裝的版本。
9 更新標准庫
(這一步,應該是需要的,gcc升級后,標准庫還是舊的,可能影響一些編譯操作。)
1、進入到剛才安裝新的GCC的目錄中:cd /usr/local/gcc-8.3.0
2、進入到庫目錄:cd lib64 (注意:系統如果是64位的就進入到lib64目錄,否則進入到lib目錄)
3、查看當前庫的最搭版本:ls,結果看到:libstdc++.so.6.0.25
4、復制到系統默認的庫目錄下:
cp libstdc++.so.6.0.25 /usr/lib64/ (注意:系統如果是32:cp libstdc++.so.6.0.25 /usr/lib/)
5、進入到/usr/lib64下,查看相關的版本信息:
cd /usr/lib64
ls -l | grep libstdc++
結果:
... libstdc++.so.6 -> libstdc++.so.6.0.13
... libstdc++.so.6.0.13
... libstdc++.so.6.0.25
6、刪除舊的軟連接:
rm -f libstdc++.so.6
7、建立新的軟連接:
ln -s libstdc++.so.6.0.25 libstdc++.so.6
8、查看標准庫最新的版本:
strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX ## strings 在對象文件或二進制文件中查找可打印的字符串
-
GLIBCXX_3.4
-
GLIBCXX_3.4.1
-
GLIBCXX_3.4.2
-
GLIBCXX_3.4.3
-
GLIBCXX_3.4.4
-
GLIBCXX_3.4.5
-
GLIBCXX_3.4.6
-
GLIBCXX_3.4.7
-
GLIBCXX_3.4.8
-
GLIBCXX_3.4.9
-
GLIBCXX_3.4.10
-
GLIBCXX_3.4.11
-
GLIBCXX_3.4.12
-
GLIBCXX_3.4.13
-
GLIBCXX_3.4.14
-
GLIBCXX_3.4.15
-
GLIBCXX_3.4.16
-
GLIBCXX_3.4.17
-
GLIBCXX_3.4.18
-
GLIBCXX_3.4.19
-
GLIBCXX_3.4.20
-
GLIBCXX_3.4.21
-
GLIBCXX_3.4.22
-
GLIBCXX_3.4.23
-
GLIBCXX_3.4.24
-
GLIBCXX_3.4.25
-
GLIBCXX_FORCE_NEW
-
GLIBCXX_DEBUG_MESSAGE_LENGTH
可以看到,已更新到最新的25版本。
gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/gcc-8.3.0/libexec/gcc/x86_64-pc-linux-gnu/8.3.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ./configure --prefix=/usr/local/gcc-8.3.0 --enable-checking=release --enable-languages=c,c++ --disable-multilib
Thread model: posix
gcc version 8.3.0 (GCC)
=======================================================
安裝gcc需要這三個依賴:GMP 4.2+, MPFR 2.4.0+ and MPC 0.8.0+。
錯誤中還指出了下載頁面的地址:
ftp://gcc.gnu.org/pub/gcc/infrastructure/
1、打開鏈接:
ftp://gcc.gnu.org/pub/gcc/infrastructure/
2、找到需要的三個包地址,下載下來:
cd ..
wget ftp://gcc.gnu.org/pub/gcc/infrastructure/gmp-6.1.0.tar.bz2
wget ftp://gcc.gnu.org/pub/gcc/infrastructure/mpfr-3.1.4.tar.bz2
wget ftp://gcc.gnu.org/pub/gcc/infrastructure/mpc-1.0.3.tar.gz
3、安裝GMP:
tar -jxvf gmp-6.1.0.tar.bz2
cd gmp-6.1.0
./configure
make && make install
cd ..
4、安裝MPFR:
tar -jxvf mpfr-3.1.4.tar.bz2
cd mpfr-3.1.4
./configure
make && make install
cd ..
5、安裝MPC:
tar -zxvf mpc-1.0.3.tar.gz
cd mpc-1.0.3
./configure
make && make install
cd ..
export LD_LIBRARY_PATH="/usr/local/lib"
The following requested languages could not be built: gfortran
Supported languages are: c,brig,c,c++,fortran,go,lto,objc,obj-c++
=======================================================
REF
https://blog.csdn.net/weiwangchao_/article/details/103897043/
https://gcc.gnu.org/projects/cxx-status.html