更新 Ubuntu 18.04 中的 gcc 替代方案 - g++ 不能成为 gcc 的从属

gre*_*123 5 ubuntu gcc g++

尝试更新替代方案但出现此错误。谷歌搜索没有显示任何解决方案。

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.9

update-alternatives:错误:替代 g++ 不能成为 gcc 的从属:它是一个主替代方案

Fra*_*ein 8

这似乎是预期的行为,但在某些 Ubuntu 版本中可能有所不同。因此,为了避免这个问题g++

update-alternatives: error: alternative g++ can't be slave of gcc: it is a master alternative

只需在 中单独调用它update-alternatives,例如:

sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 110

请注意使其与其他 GNU 工具同步。

这似乎不是 Ubuntu 20.04 LTS 中的问题g++,但cpp尽管如此,为了避免该问题cpp

update-alternatives: error: alternative cpp can't be slave of gcc: it is a master alternative

例如,在从 升级gcc-9gcc-11并保持其他替代方案同步的情况下,以下内容在 Ubuntu 20.04 LTS 下有效:

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update && sudo apt-get install gcc-11 g++-11 cpp-11
Run Code Online (Sandbox Code Playgroud)
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 90 \
                         --slave /usr/bin/g++ g++ /usr/bin/g++-9 \
                         --slave /usr/bin/gcov gcov /usr/bin/gcov-9 \
                         --slave /usr/bin/gcc-ar gcc-ar /usr/bin/gcc-ar-9 \
                         --slave /usr/bin/gcc-ranlib gcc-ranlib /usr/bin/gcc-ranlib-9 && \
sudo update-alternatives --install /usr/bin/cpp cpp /usr/bin/cpp-9 90
Run Code Online (Sandbox Code Playgroud)
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 110 \
                         --slave /usr/bin/g++ g++ /usr/bin/g++-11 \
                         --slave /usr/bin/gcov gcov /usr/bin/gcov-11 \
                         --slave /usr/bin/gcc-ar gcc-ar /usr/bin/gcc-ar-11 \
                         --slave /usr/bin/gcc-ranlib gcc-ranlib /usr/bin/gcc-ranlib-11 && \
sudo update-alternatives --install /usr/bin/cpp cpp /usr/bin/cpp-11 110
Run Code Online (Sandbox Code Playgroud)

验证可以通过以下方式完成:

gcc --version;g++ --version;gcov --version;cpp --version;
Run Code Online (Sandbox Code Playgroud)

编辑:

对于感兴趣的人来说,在这种情况下升级gdb有以下步骤:

gdbVersion=11.1
wget http://ftp.gnu.org/gnu/gdb/gdb-${gdbVersion}.tar.xz
tar -xf gdb-${gdbVersion}.tar.xz
cd gdb-${gdbVersion}/
./configure
make
sudo make install
Run Code Online (Sandbox Code Playgroud)

验证:

gdb --version
Run Code Online (Sandbox Code Playgroud)