update-alternatives --config gcc 根本不改变编译器

Posted

技术标签:

【中文标题】update-alternatives --config gcc 根本不改变编译器【英文标题】:update-alternatives --config gcc doesn't change the compiler at all 【发布时间】:2019-03-06 17:20:07 【问题描述】:

我已经在 ubuntu 18(默认 gcc-7)上安装了 gcc-6,因为 cuda 工具包 9 需要这个特定版本的编译器。我用它来替代何时使用 gcc-6 或 gcc-7

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 100

--slave /usr/bin/g++ g++ /usr/bin/g++-7

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-6 50

--slave /usr/bin/g++ g++ /usr/bin/g++-6

那我可以在两者之间选择作为默认编译器

sudo update-alternatives --config gcc

替代 gcc 有 2 种选择(提供 /usr/bin/gcc)。

选择路径优先状态


*0 /usr/bin/gcc-7 100 自动模式

1 /usr/bin/gcc-6 50 手动模式

2 /usr/bin/gcc-7 100 手动模式

按回车键保留当前选择[*],或输入选择编号:0

我选择 [0],表示 gcc7。然后我检查版本,但仍然是 gcc6

gcc --version

gcc (Ubuntu 6.5.0-2ubuntu1~18.04) 6.5.0 20181026

知道为什么它不起作用吗?

【问题讨论】:

【参考方案1】:

我解决了。使用 cuda 时的事情是在 cuda 文件夹中你有一个到 gcc 的符号链接。这个链接每次都把我带到 gcc-6 而不是 gcc-7。我更改了符号链接,首先将其从 cuda 文件夹中删除,然后创建一个直接进入 gcc-7 的新链接。就我而言

sudo rm /usr/local/cuda-9.0/bin/gcc

sudo rm /usr/local/cuda-9.0/bin/g++

sudo ln -s /usr/bin/gcc-7 /usr/local/cuda-9.0/bin/gcc

sudo ln -s /usr/bin/g++-7 /usr/local/cuda-9.0/bin/g++

现在编译器是 gcc-7 而不是 gcc-6。

我预计 gcc-7 的 cuda 会出现不良行为,但一切正常。

【讨论】:

以上是关于update-alternatives --config gcc 根本不改变编译器的主要内容,如果未能解决你的问题,请参考以下文章

centos/linux alternatives与update-alternatives详解与软件版本切换

sudo update-alternatives 命令失效

在Ubuntu中通过update-alternatives切换软件版本

使用update-alternatives 命令修改Java版本-自动切换Java版本

使用update-alternatives 命令修改Java版本-自动切换Java版本

linux维护软件版本命令 update-alternatives