![从 PPA 下载了 g++ 4.8 但无法将其设置为默认值?](https://linux22.com/image/1117436/%E4%BB%8E%20PPA%20%E4%B8%8B%E8%BD%BD%E4%BA%86%20g%2B%2B%204.8%20%E4%BD%86%E6%97%A0%E6%B3%95%E5%B0%86%E5%85%B6%E8%AE%BE%E7%BD%AE%E4%B8%BA%E9%BB%98%E8%AE%A4%E5%80%BC%EF%BC%9F.png)
我已经在 Ubuntu 12.10 上下载了 g++ 4.8,方法如下:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install g++-4.8
但当我这样做时:
sudo update-alternatives --config g++
要切换 g++ 版本,它说:
update-alternatives: error: no alternatives for g++.
但如果我这样做:
g++ --version
它说:
g++ (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
Copyright (C) 2011 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
如何将我的 g++ 4.8 安装设置为默认 g++?
答案1
您需要update-alternatives
告知您有 2 个 C++ 编译器,为每个编译器创建一个记录,然后配置要使用哪一个。具体操作如下:
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.6.3 60
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 40
sudo update-alternatives --config g++
从现在开始,切换编译器时唯一需要的就是这个命令:
sudo update-alternatives --config g++
请参阅man update-alternatives
以了解更多信息。
答案2
首先,您必须发现所有工具的 4.8 二进制文件在哪里:
$ which gcc-4.8
/usr/bin/gcc-4.8
$ which g++-4.8
/usr/bin/g++-4.8
$ ls /usr/bin/*-4.8
/usr/bin/cpp-4.8 /usr/bin/x86_64-linux-gnu-cpp-4.8
/usr/bin/g++-4.8 /usr/bin/x86_64-linux-gnu-g++-4.8
/usr/bin/gcc-4.8 /usr/bin/x86_64-linux-gnu-gcc-4.8
/usr/bin/gcc-ar-4.8 /usr/bin/x86_64-linux-gnu-gcc-ar-4.8
/usr/bin/gcc-nm-4.8 /usr/bin/x86_64-linux-gnu-gcc-nm-4.8
/usr/bin/gcc-ranlib-4.8 /usr/bin/x86_64-linux-gnu-gcc-ranlib-4.8
/usr/bin/gcov-4.8
因此,我们有了所有的二进制文件,现在让我们看看这些二进制文件是否有可用的符号链接:
$ cd /usr/bin
$ ls -l gcc* cpp g++
lrwxrwxrwx 1 root root 7 sep 18 14:02 cpp -> cpp-4.7
lrwxrwxrwx 1 root root 7 abr 22 2013 g++ -> g++-4.7
lrwxrwxrwx 1 root root 7 sep 18 14:02 gcc -> gcc-4.7
我们可以看到,只有cpp
、g++
和gcc
有符号链接。这里我们有两个选择。
符号链接
我们用我们的符号链接替换它,首先删除实际内容:
sudo rm /usr/bin/cpp /usr/bin/gcc /usr/bin/g++
然后创造我们的
sudo ln -s /usr/bin/cpp-4.8 /usr/bin/cpp
sudo ln -s /usr/bin/gcc-4.8 /usr/bin/gcc
sudo ln -s /usr/bin/g++-4.8 /usr/bin/g++
要恢复,请使用相同的命令,但使用 4.7 或 4.6
sudo rm /usr/bin/cpp /usr/bin/gcc /usr/bin/g++
sudo ln -s /usr/bin/cpp-4.7 /usr/bin/cpp
sudo ln -s /usr/bin/gcc-4.7 /usr/bin/gcc
sudo ln -s /usr/bin/g++-4.7 /usr/bin/g++
答案3
这是很棒的描述以及如何创建和管理主服务器和从服务器(gcc 和 g++)替代方案的分步说明。
很快,它
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.7 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.7
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 40 --slave /usr/bin/g++ g++ /usr/bin/g++-4.8
sudo update-alternatives --config gcc