服务器centos 环境升级gcc版本
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了服务器centos 环境升级gcc版本,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2597字,纯文字阅读大概需要4分钟。
内容图文
![服务器centos 环境升级gcc版本](/upload/InfoBanner/zyjiaocheng/982/467739ed95eb44e0988b8869f41c1985.jpg)
低版本不支持c++11
CentOS 6.X 升级GCC G++ (以GCC/G++版本v6.3.0为例)
1、 获取安装包并解压,本人喜欢用backup作为下载的目录
mkdir /backup
cd /backup
wget https://ftp.gnu.org/gnu/gcc/gcc-6.3.0/gcc-6.3.0.tar.bz2
tar -jxvf gcc-6.3.0.tar.bz2
当然,https://ftp.gnu.org/gnu/gcc? 里面有所有的gcc版本供下载,最新版本已经有6.3.0啦.
建议下载.bz2的压缩包,文件更小,下载时间更少.
2、 下载供编译需求的依赖项
cd gcc-6.3.0
./contrib/download_prerequisites
3、 建立一个目录供编译出的文件存放
mkdir gcc-build-6.3.0
cd gcc-build-6.3.0
4、 生成Makefile文件
../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
5、 编译
make -j4
-j4选项是make对多核处理器的优化,如果不成功请使用 make,相关优化选项可以移步至参考文献[2]。
(注意:此步骤非常耗时,我虚拟机耗时近3小时; 实体机近80分钟,CPU基本是满的,内存也使用不少)
6、 安装
make install
(安装需要root权限!)
mv /usr/bin/gcc /usr/bin/gcc.bckup
ln -s /usr/local/bin/gcc /usr/bin/gcc
查看安装
ls /usr/local/bin | grep gcc
7、 重启,然后查看gcc版本
gcc -v
8、 写个C++11 特性的程序段 测试
tryCpp11.cc
g++ -std=c++11 -o tryCpp11 tryCpp11.cc
顺利编译成功,执行./testCpp11提示:
-
./testCpp11: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by ./testCpp11)
-
./testCpp11: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by ./testCpp11)
-
./testCpp11: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by ./testCpp11)
看来动态库并没有更新。
9、升级gcc,生成的动态库没有替换老版本gcc的动态库
源码编译升级安装了gcc后,编译程序或运行其它程序时,有时会出现类似/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found的问题。这是因为升级gcc时,生成的动态库没有替换老版本gcc的动态库导致的,将gcc最新版本的动态库替换系统中老版本的动态库即可解决。
9.1 运行以下命令检查动态库:
strings /usr/lib64/libstdc++.so.6 | grep GLIBC
从输出可以看出,gcc的动态库还是旧版本的。说明出现这些问题,是因为升级gcc时,生成的动态库没有替换老版本gcc的动态库。
9.2 执行以下命令,查找编译gcc时生成的最新动态库:
find / -name "libstdc++.so*"
将上面的最新动态库libstdc++.so.6.0.22复制到/usr/lib64目录下
cd /usr/lib64
cp /backup/gcc-6.3.0/gcc-build-6.3.0/stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.22 ./
9.3 删除原来软连接:
rm -rf libstdc++.so.6
或者:
mv /usr/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6_backup
ln -s /usr/local/lib64/libstdc++.so.6.0.22 /usr/lib64/libstdc++.so.6
9.4 将默认库的软连接指向最新动态库:
ln -s libstdc++.so.6.0.22 libstdc++.so.6
9.5 默认动态库升级完成。重新运行以下命令检查动态库:
strings /usr/lib64/libstdc++.so.6 | grep GLIBC
可以看到 输出有"GLIBCXX_3.4.22" 了
内容总结
以上是互联网集市为您收集整理的服务器centos 环境升级gcc版本全部内容,希望文章能够帮你解决服务器centos 环境升级gcc版本所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。