centos中,使用devtoolset切换到高版本gcc后如何切换到默认gcc

centos中,使用devtoolset切换到高版本gcc后如何切换到默认gcc

我想在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例如,您甚至可以将 放入~/.bashrcor中~/.bash_profile,以便将版本设置为登录时的版本gcc之一。devtoolset如果使用此方法,要返回系统默认值,请在~/.bashrc或中注释掉该行~/.bash_profile,然后分别运行bashsource ~/.bash_profile。这将启动一个新的 shell 会话,其中包含这些 shell 初始化文件之一中的所有内容(scl enable注释掉的命令除外)。唯一的缺点是您通过命令设置的任何变量export将不再存在,因为 shell 会话将是新的。

答案2

我不是 Linux 方面的专家,scl但我确实有多年的 Linux 经验。

当您执行scl enable devtoolset-9 bash此操作时,会启动一个新的 bash 并设置一个新环境。

您可以通过以下方式查看新bash流程:

  • 首先启动一个新的 shell 并通过以下方式检查 shell 的 pidecho $$
  • 其次通过启用新的开发工具集scl enable devtoolset-9 bash
  • 然后再次检查你的pidecho $$
  • 为了获得奖励积分,你可以pstree -p查看你的新 bash pid 是否有旧 bash 进程的父 pid

所以最后回答你的问题:要返回到默认g++编译器,你需要做的就是退出当前bash进程,然后你应该拥有旧的 g++ 编译器。

关于 ~/.bashrc 的重要说明:

  • 如果您以某种方式修改了您的解决方案,我的解决方案将不起作用~/.bashrc
  • 也就是说,如果你那里有一些东西总是可以做scl enable devtoolset-9
  • 请参阅本页上的其他解决方案,因为其他解决方案更深入地讨论您的 ~/.bashrc 以及如何修改或取消修改它

答案3

这可能只是更改一些环境变量的问题,例如PATH.该文件有多大/opt/rh/devtoolset-5/enable?您能否查看它,看看它的作用,并使其适应您想要使用的旧编译器?明显需要查找的内容是安装新编译器文件的目录名称(将它们更改为旧编译器的相应路径名)和版本号。我不知道那里还可能有什么。

相关内容