查看系统当前版本:
[root@yx-ct6 ~]# gcc --version
gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-18)
Copyright (C) 2010 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
下载并解压源码包(此处我下载的版本为gcc4.8)
cd /usr/local/src
wget http://gcc.parentingamerica.com/releases/gcc-4.8.5/gcc-4.8.5.tar.bz2
tar -jxvf gcc-4.8.5.tar.bz2
编译
- 下载供编译需求的依赖项
cd gcc-4.8.5
./contrib/download_prerequisites
- 建立一个目录供编译出的文件存放 (这一步很重要)
mkdir /usr/local/src/gcc-build-4.8.5
cd /usr/local/src/gcc-build-4.8.5
../gcc-4.8.5/configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
- 正式开始编译
make -j4 ##多核编译,加快编译速度
- 安装
make install
切换GCC到新版本
确定新安装的GCC的路径,一般默认在/usr/local/bin下。可以先updatedb,然后locate gcc-4.8|tail
找一下
gcc动态库检查是否已替换为新版本
源码编译升级安装了gcc后,编译程序或运行其它程序时,有时会出现类似/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found的问题。这是因为升级gcc时,生成的动态库没有替换老版本gcc的动态库导致的,将gcc最新版本的动态库替换系统中老版本的动态库即可解决。
- 检查动态库
[root@yx-ct6 ~]# strings /usr/lib64/libstdc++.so.6 | grep GLIBC
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
GLIBC_2.2.5
GLIBC_2.3
GLIBC_2.4
GLIBC_2.3.2
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH
- 查找编译gcc时生成的最新动态库:
find / -name "libstdc++.so*"
- 复制新版本动态库到指定目录并创建软链接
cd /usr/lib64
cp /usr/local/src/objdir/stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.19 ./
rm -rf libstdc++.so.6 #删除原来软连接
ln -s libstdc++.so.6.0.22 libstdc++.so.6 #将默认库的软连接指向最新动态库
ln -s /usr/local/bin/gcc /usr/bin/gcc ##替换老版本命令文件
- 再次检查确认动态库
[root@blog lib64]# strings /usr/lib64/libstdc++.so.6 | grep GLIBC
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
GLIBC_2.3
GLIBC_2.2.5
GLIBC_2.3.2
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH
文章参考:
https://www.cnblogs.com/lzpong/p/5755678.html
http://blog.csdn.net/wsclinux/article/details/59482845
本文由 Mr Gu 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: Mar 2, 2018 at 03:03 pm