整个过程耗时 >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