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详解与软件版本切换
在Ubuntu中通过update-alternatives切换软件版本
使用update-alternatives 命令修改Java版本-自动切换Java版本