1. 问题
在大多数Linux系统上,g++ 命令通常是链接到指定版本的GCC编译器的符号链接(如下图所示)。为了方便使用 g++ 命令而不必键入完整的版本号(如 g++ -7 ),则可通过Linux的update-alternative 更新替代命令。
2. update-alternative命令
update-alternatives 命令是Linux系统中用于管理系统中的软件包的备选版本的工具,它允许用户在多个软件包版本之间进行切换,以及选择默认版本。主要用途是为系统中的特定命令或服务选择默认版本。基本语法如下:
sudo update-alternatives --install <link> <name> <path> <priority>
sudo update-alternatives --config <name>
- link:指向替代品的符号链接的路径。
- name :备选的名称,用于标识特定的软件包或命令。
- path :备选的实际路径。
- priority :备选项的优先级。
3. 解决办法
对于该问题,可使用以下命令。
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 100
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 100
这将创建 gcc 和 g++ 的备选项,链接到 gcc-7 和 g++ -7 ,并将它们的优先级设置为100。然后,可以使用 –config 选项选择默认版本:
sudo update-alternatives --config gcc
sudo update-alternatives --config g++
update-alternatives 提供了一个交互式的菜单,允许你从备选列表中选择默认的版本。这样可以轻松地切换系统中安装的不同软件包版本,而无需手动更改符号链接。
4. 关于优先级
优先级 priority 是用于确定备选项的首选级别的数值。优先级越高,表示该备选项更受青睐,会成为默认的备选项。
在 update-alternatives 中,通常使用1到1000的整数范围来表示优先级。在一个备选项组中,数值越高的备选项会被视为优先级更高,成为默认选择。如果存在多个备选项的优先级相同,则可以在它们之间自由选择。
以上命令将 /usr/bin/gcc-7 添加到 gcc 的备选项中,并设置其优先级为100,意味着如果没有手动选择,默认情况下系统将使用 /usr/bin/gcc-7 ,因为它的优先级更高。
如果后面又安装了新版本的 gcc 版本,并使用较高的优先级(例如200),那么这个新版本可能会成为默认选择,因为它的优先级更高。