1 Centos7的默认gcc版本与安装g++
Centos7默认安装了gcc,但是默认没有安装g++,
我们可以在命令行输入
g++
如果出现
-bash: g++: command not found
则说明没有安装g++,可以通过以下命令安装
yum install -y gcc gcc-c++
这个时候使用以下命令查看gcc和g++的版本
gcc --version
g++ --version
gcc和g++的版本都为4.8.5,虽然GNU官方文档说GCC 4.8.1就是支持C++11第一个完整版本,不过经过这么多年的实测,C++11的一些版本在GCC 4.8.x这个大版本号支持的不是特别好,所以如果想完整使用C++11/C++14,这里建议使用GCC 10,因为从GCC 6.1到GCC 10(包含)的C++默认语言标准就是C++14,完整支持C++11,下面以在Centos7中安装GCC 10说明如何在Centos 7中安装高版本的gcc/g++编译器。
2 Centos 7安装高版本的gcc/g++
2.1 切换用户
如果当前用户不是root,则切换到root用户,使用以下命令
su -root
2.2 安装centos-release-sc
依次运行以下命令安装centos-release-scl
sudo yum install -y http://mirror.centos.org/centos/7/extras/x86_64/Packages/centos-release-scl-rh-2-3.el7.centos.noarch.rpm
sudo yum install -y http://mirror.centos.org/centos/7/extras/x86_64/Packages/centos-release-scl-2-3.el7.centos.noarch.rpm
2.3 安装对应版本的devtoolset
使用以下命令安装GCC 10
sudo yum install devtoolset-10-gcc-c++
如果要安装其他版本的GCC,则使用
# gcc/g++ 10,依次类推
sudo yum install devtoolset-10-gcc-c++
# gcc/g++ 9
sudo yum install devtoolset-9-gcc-c++
# gcc/g++ 8
sudo yum install devtoolset-8-gcc-c++
# gcc/g++ 7
sudo yum install devtoolset-7-gcc-c++
# gcc/g++ 6
sudo yum install devtoolset-6-gcc-c++
也可以安装多个版本的devtoolset,多个版本的devtooset可以共存,安装目录位于/opt/rh/devtoolset-*/
目录下。
2.4 切换gcc/g++版本
安装完devtoolset后,比如安装的devtoolset-10-gcc-c++
,则在/opt/rh/devtoolset-10/
目录下有一个enable
,我们可以有两种方式完成不同gcc版本的切换。
第1种方式
# *代表版本号
scl enable devtoolset-* bash
比如是devtoolset-10-gcc-c++
,则切换命令为
scl enable devtoolset-10 bash
第2种方式
source /opt/rh/devtoolset-10/enable
使用上述两种命令之后是切换到对应的gcc/g++版本,我们可以使用
gcc --version
g++ --version
查看当前gcc/g++版本是否为gcc10/g++10,如果是则说明版本切换成功,然后就可以使用高版本的gcc/g++编译代码了,不过上述两条命令只对当前的会话有效,如果重启系统或者退出会话,则gcc/g++版本则会回到默认的4.8.5版本,如果要永久性的指定默认的gcc、g++版本为高版本的gcc/g++版本,则使用下一个小节方法。
2.5 永久使用高版本的gcc/g++
旧版本gcc运行的在/usr/bin/gcc
,所以将该目录下的gcc/g++
替换为安装的新版本gcc软连接即可,依次执行以下命令
mv /usr/bin/gcc /usr/bin/gcc-4.8.5
ln -s /opt/rh/devtoolset-10/root/bin/gcc /usr/bin/gcc
mv /usr/bin/g++ /usr/bin/g++-4.8.5
ln -s /opt/rh/devtoolset-10/root/bin/g++ /usr/bin/g++
通过上面的两个命令可以永久的将gcc/g++版本切换为gcc10/g++10,即使系统重启也不会回到之前的4.8.5。
2.6 在CMake中使用高版本的gcc/g++
如果只是想在当前会话中让CMake使用高版本的gcc/g++,则在当前会话中使用
export CC=/opt/rh/devtoolset-10/root/bin/gcc
export CXX=/opt/rh/devtoolset-10/root/bin/g++
设置CC和CXX的环境变量。
如果想永久让CMake使用高版本的gcc/g++,则需要修改系统环境变量
nano /etc/profile
# 在/ect/profile增加下面两行
export CC=/opt/rh/devtoolset-10/root/bin/gcc
export CXX=/opt/rh/devtoolset-10/root/bin/g++
# 生效
source /etc/profile
我们也可在CMakeLists.txt中显式指定C和C++编译器,下面是无缓存版本
set(CMAKE_C_COMPILER /opt/rh/devtoolset-10/root/bin/gcc)
set(CMAKE_CXX_COMPILER /opt/rh/devtoolset-10/root/bin/g++)
下面是强制缓存版本
set(CMAKE_C_COMPILER /opt/rh/devtoolset-10/root/bin/gcc CACHE PATH "gcc" FORCE)
set(CMAKE_CXX_COMPILER /opt/rh/devtoolset-10/root/bin/g++ CACHE PATH "g++" FORCE)
参考
本文作者:StubbornHuang
版权声明:本文为站长原创文章,如果转载请注明原文链接!
原文标题:Centos7 – 安装高版本的gcc/g++,多版本切换以及配置环境
原文链接:https://www.stubbornhuang.com/2777/
发布于:2023年09月01日 13:59:15
修改于:2023年09月08日 14:20:02
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论
52