我想在centos中安装几个不同版本的gcc。 centos 6中gcc的默认版本是4.9.3。所以我使用devtoolset安装更高版本的gcc。然后我通过执行“source /opt/rh/devtoolset-5/enable”切换到更高版本的gcc。但现在如果我想切换回默认的gcc,我该怎么办?顺便问一下,在centos 5中安装多个不同版本的gcc有什么解决办法吗?
答案1
gcc
其分发的版本CentOS 6
实际上是 4.4.7。
您可以通过gcc
安装或从源代码编译来安装任意多个版本。devtoolset-#
yum
第一种方法是最简单的。确保您是devtoolset
通过scl repo
.我认为您已经安装了,但如果您没有安装:
yum install centos-release-scl
然后,您可以使用以下命令将其设置gcc version
为您想要的任何一项。本示例使用 5 并假设您的 shell 是bash
:
scl enable devtoolset-5 bash
如果你想改为6:
scl enable devtoolset-6 bash
bash
如果您想改回默认值,那么假设您的 shell 是以下任一操作:
bash
source ~/.bash_profile
第一个将启动一个新的 shell 会话并在~/.bashrc
.第二个将使用 中的变量/命令来设置它~/.bash_profile
。 (未启用开发工具集)。
scl enable devtoolset-5 bash
例如,您甚至可以将 放入~/.bashrc
or中~/.bash_profile
,以便将版本设置为登录时的版本gcc
之一。devtoolset
如果使用此方法,要返回系统默认值,请在~/.bashrc
或中注释掉该行~/.bash_profile
,然后分别运行bash
或source ~/.bash_profile
。这将启动一个新的 shell 会话,其中包含这些 shell 初始化文件之一中的所有内容(scl enable
注释掉的命令除外)。唯一的缺点是您通过命令设置的任何变量export
将不再存在,因为 shell 会话将是新的。
答案2
我不是 Linux 方面的专家,scl
但我确实有多年的 Linux 经验。
当您执行scl enable devtoolset-9 bash
此操作时,会启动一个新的 bash 并设置一个新环境。
您可以通过以下方式查看新bash
流程:
- 首先启动一个新的 shell 并通过以下方式检查 shell 的 pid
echo $$
- 其次通过启用新的开发工具集
scl enable devtoolset-9 bash
- 然后再次检查你的pid
echo $$
- 为了获得奖励积分,你可以
pstree -p
查看你的新 bash pid 是否有旧 bash 进程的父 pid
所以最后回答你的问题:要返回到默认g++
编译器,你需要做的就是退出当前bash
进程,然后你应该拥有旧的 g++ 编译器。
关于 ~/.bashrc 的重要说明:
- 如果您以某种方式修改了您的解决方案,我的解决方案将不起作用
~/.bashrc
- 也就是说,如果你那里有一些东西总是可以做
scl enable devtoolset-9
- 请参阅本页上的其他解决方案,因为其他解决方案更深入地讨论您的 ~/.bashrc 以及如何修改或取消修改它
答案3
这可能只是更改一些环境变量的问题,例如PATH
.该文件有多大/opt/rh/devtoolset-5/enable
?您能否查看它,看看它的作用,并使其适应您想要使用的旧编译器?明显需要查找的内容是安装新编译器文件的目录名称(将它们更改为旧编译器的相应路径名)和版本号。我不知道那里还可能有什么。