有 2 个版本的 gcc

有 2 个版本的 gcc

我刚刚从 ppa 存储库安装了 gcc 4.7。Ubuntu 12.04 已经附带 4.6。当我使用命令时:

gcc --version

它告诉我确切的版本是 4.6.3。

我不知道如何启动 4.7 编译器。事实上,我不介意删除以前的版本,只保留 4.7(我想这不会有问题)。

我怎样才能解决这个问题?

答案1

使用update-alternatives(从 CLI)或galternatives(从 GUI)设置 gcc 的默认值。

如果你没有,请使用以下命令安装:sudo apt-get install galternatives
我会使用 GUI 版本,它对于初学者来说更简单。

从 CLI:
sudo update-alternatives --install /usr/bin/gcc gcc /path/to/newer/gcc 40
sudo update-alternatives --install /usr/bin/gcc gcc /path/to/older/gcc 30
sudo update-alternatives --config gcc

答案2

有一些机制可以通过使用名称 (gcc) 来切换 gcc (和其他工具) 的版本,请参阅 update-alternatives 手册页,但有人建议更改系统范围的 gcc 默认值是一件坏事。现有程序已使用默认编译器成功编译和测试,虽然希望较新的编译器仍能产生可接受的结果,但并不能保证。编译器中已弃用的内容可能会在下一版本中删除。可能会引入新的错误。发行版使用特定编译器版本是有原因的 —— 它们提供的所有程序都适用于该版本,而有些程序可能无法在更高版本上运行。
对于您自己使用,请选择您想要的编译器(下例中的 gcc-8),而无需更改系统范围的默认值,方法是将 gcc(和 ar、nm、ranlib)链接添加到您自己的 ~/bin 目录中,指向所需版本:

ln -s ~/bin/gcc -> /usr/bin/gcc-8  
ln -s ~/bin/ar -> /usr/bin/gcc-ar-8  
ln -s ~/bin/ranlib -> /usr/bin/gcc-ranlib-8  
ln -s ~/bin/nm -> /usr/bin/gcc-nm-8  

如果您的 ~/bin 目录不存在,请创建:

mkdir ~/bin

您的 ~/bin 将被选中并添加到 PATH 环境变量的开头,以便在那里找到并使用 gcc 命令,而不是使用 /usr/bin 中的系统默认值。

此技术可应用于需要特定编译器版本的应用程序(例如 CUDA)。所选编译器版本的链接可放入应用程序 bin 目录中,并且该位置可首先添加到您的 PATH(对于 bash shell 用户,则在 .profile 中)。

相关内容