在Ubuntu 16.04上更新到最新的gcc和g ++


11

我最近尝试降级到gcc 4.7,因为我正在使用的cfd代码未使用最新的gcc版本进行编译。但是在经历了许多错误并且代码仍然没有编译之后,我放弃了,我想回到最新的gcc和g ++编译器,但是看来我可能已经搞砸了。

当我做:

sudo update-alternatives --remove-all gcc 
sudo update-alternatives --remove-all g++
sudo apt-get install gcc-6.2 g++-6.2

甚至gcc-5.1 g ++-5.1都给我以下错误

Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package gcc-6.2
E: Couldn't find any package by glob 'gcc-6.2'
E: Couldn't find any package by regex 'gcc-6.2'
E: Unable to locate package g++-6.2
E: Couldn't find any package by glob 'g++-6.2'
E: Couldn't find any package by regex 'g++-6.2'

我之前也尝试过

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-6.2 g++-6.2

但它似乎不起作用。最后当我刚做

sudo apt-get install gcc

它说

Reading package lists... Done
Building dependency tree       
Reading state information... Done
gcc is already the newest version (4:5.3.1-1ubuntu1).

我知道我仍然需要安装和配置替代方案,但是这样做不起作用如下

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5.3 10
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5.3 10
sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc 30
sudo update-alternatives --set cc /usr/bin/gcc
sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++ 30
sudo update-alternatives --set c++ /usr/bin/g++
sudo update-alternatives --config gcc
sudo update-alternatives --config g++

抱歉,这结束了很长时间,如果您需要更多信息,请告诉我。谢谢!

编辑: 我实际上通过将上述代码中的gcc-5.3更改为gcc-5使其工作,因为这似乎是usr / bin中的名称。如果有人遇到相同的问题,我将保留它以备将来参考。


2
AFAIK gcc和g ++默认情况下不作为更新替代程序安装-而是gccg++依赖包安装直接链接到默认依赖项,例如/usr/bin/g++ -> g++-5。您是否尝试过简单地重新安装gccg++软件包?
steeldriver '16

避免此类问题的一种方法是创建一个VM并在其中安装旧的编译器版本。
NZD

可以在安装中修复此修补程序。阅读软件包列表...完成构建依赖关系树正在读取状态信息...完成gcc已经是最新版本(4:7.3.0-3ubuntu2.1)。0已升级,0新安装,0已删除和36未升级。
JOC KERS

Answers:


5

依次运行以下命令。我遇到了同样的错误。这对我有用。

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-snapshot
sudo apt-get install gcc-6 g++-6

9
为什么sudo apt-get update要运行3次而不是第一次?特别是为什么最后一次安装软件包之后
伊莱亚·卡根

gcc快照到底能做什么?如何删除以前的gcc版本(4.8.4)?
abunickabhi

0

必须运行apt-get更新,以便您的计算机可以访问刚刚添加的存储库,从而使其内容可用。如果您不运行它,则您的计算机不会知道它具有可用的存储库信息

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.