Centos7下升级gcc/g++版本(简单 + 避坑)
admin 阅读: 2024-03-15
后台-插件-广告管理-内容页头部广告(手机) |
在 Centos7 下,使用 yum 安装高版本的 gcc/g++ 最简单:
yum -y install centos-release-scl yum -y install devtoolset-11-gcc devtoolset-11-gcc-c++ devtoolset-11-binutils- 1
- 2
- 需要安装哪个个版本的gcc/g++,就把数字替换成对应的版本号。例如上面代码中,我们下载了 gcc11 和 g++11
- gcc版本与C++标准的对应关系可以参考gcc官网 >链接
使用 scl enable devtoolset-11 bash 启用 devtoolset-11 软件集和,此时使用 g++ --version 以及 gcc --version 命令就会发现我们的 gcc g++ 已经完成了升级。
但是scl命令的作用只是暂时的,如果要长久生效,我们就需要写入到配置文件中:
echo "source /opt/rh/devtoolset-11/enable" >>/etc/profile- 1
(注意:具体数字根据你下载的版本来)
写到这里我们的升级工作就完成了,但我写这篇博客就是想吐槽一下网络上常见的错误:试图通过替换 gcc/g++ 来实现永久生效。
mv /usr/bin/gcc /usr/bin/gcc-4.8.5 sudo ln -s /opt/rh/devtoolset-10/root/bin/gcc /usr/bin/gcc mv /usr/bin/g++ /usr/bin/g++-4.8.5 sudo ln -s /opt/rh/devtoolset-10/root/bin/g++ /usr/bin/g++- 1
- 2
- 3
- 4
- 5
- 6
- 7
试想一下,你的编译器确实是新版的,但是你的头文件和库文件不还都是原先老版本的吗,一些新版的C++语法自然就不会支持。我当初就被这种写法坑了,编译 redis-plus-plus 时就提示提示 c++17 语法不能识别。
执行 /opt/rh/devtoolset-11 路径下的 eable 文件才是正确的写法,它不仅设置了编译器可执行文件的 PATH 环境变量,同样会设置标准库头文件、库文件等环境变量,具体完成的操作我们可以通过 vim /opt/rh/devtoolset-11/enable 查看
- 向 PATH 环境变量中添加工具集中的编译器、调试器等工具的路径。
- 设置 LD_LIBRARY_PATH 环境变量,以便在运行程序时正确加载工具集中的库文件。
- 设置 MANPATH 环境变量,以便在使用 man 命令查看文档时能够正确显示工具集的文档。
- 设置 INFOPATH 环境变量,以便在使用 info 命令查看文档时能够正确显示工具集的文档。
- 置 PKG_CONFIG_PATH 环境变量,以便在编译过程中使用 pkg-config 工具时能够正确找到工具集中的库文件。
- 如果在执行命令之前已经设置了 CXX 或 CC 环境变量,则将这些变量设置为与工具集中对应的编译器路径。
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。
在线投稿:投稿 站长QQ:1888636
后台-插件-广告管理-内容页尾部广告(手机) |