如何在Ubuntu上使用最新的GCC?


132

我想用最新版本的编译我的程序gcc

Ubuntu 14.04带有gcc 4.8.2,但是有4.9.0可用,此外,我看到它可以作为软件包使用:gcc-4.9。我试图安装它

sudo apt-get install gcc-4.9

但它说

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Note, selecting 'gcc-4.9-base' for regex 'gcc-4.9'
gcc-4.9-base is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

看起来已经安装了,只是不是默认的?我如何利用它来构建程序?


如果要安装gcc-4.8,则需要使用sudo apt-get install gcc-4.8gcc-4.9gcc-4.8gcc-4.7gcc-4.6都是在Ubuntu的主要回购

1
@Dumindu但是我该如何gcc-4.9具体使用?
Nickolai Leschov 2014年

卸载其他人并安装4.9。

2
@Dumindu等待,您只是告诉我去做我刚才做的事情吗?它不起作用。
Nickolai Leschov 2014年

切换到root用户:sudo su -goto /usr/bin然后运行ls -l gcc*并发布您的输出。然后我将发布您的答案。
2014年

Answers:


196

正确安装gcc-4.9并将其设置为默认gcc版本的最佳方法是使用:

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.9 g++-4.9
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.9

--slave,和g++会导致g++与一起切换gcc到相同版本。但是,此时,gcc-4.9将是您在中配置的唯一版本update-alternatives,因此将4.8添加到update-alternatives,因此实际上可以使用以下方法:

sudo apt-get install gcc-4.8 g++-4.8
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.8

然后,您可以检查设置了哪一个,并使用以下方法来回更改:

sudo update-alternatives --config gcc

注意:您可以跳过安装PPA信息库而仅使用,/usr/bin/gcc-4.9-base但我更喜欢使用最新的更新工具链。


对于GCC 5.X或6,软件包(以及相应的命令)仅被称为gcc-5gcc-6等等。这是由于GCC的版本方案的变化所致,其中5.1是GCC 5的第一个发行版,而以后是5.X发行版。用于错误修复


感谢@muru的编辑...就像我在下面说的那样,我已经疲倦了大约3天,并且update-alternatives确实需要sudo,我认为我忘记了(-)奴隶之前。:) 所以谢谢。
SudoSURoot

试试sudo apt-get -f install
SudoSURoot

4
这很完美。此外,替代54.9获得GCC 5在Ubuntu的工作。(我的开发团队现在按照您的方法同时运行4.9和5。)谢谢,+ 1!
CodeMouse92 2015年

2
@hwat它gcc-6现在应该可以工作。
edwinksl

1
这对我有所帮助,但我始终忘记-确保将相同的解决方案应用于您可能使用的GNU编译器集合中的其他实用程序!例如,如果您不这样做,GCOV将抱怨版本不匹配,可能会产生错误的数据。
Toby

23

使用工具链测试构建PPA

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

我认为GCC 4.9尚未完全适用于Ubuntu 14.04。基本软件包(gcc-4.9-base)和GCC Go 4.9编译器(gccgo-4.9)可用,但其他前端不可用。我不知道为什么


1
@SudoSURoot可以将它设置为默认值,也可以不将其设置为默认值,这与我无关(还有其他相关文章)。但是,GCC 4.9的C和C ++前端可以完全从官方存储库安装在14.04上,这显然是错误的,因为该gcc-4.9-base软件包不并且也不包含二进制前端。
muru

您对基本软件包是正确的。正如您将在我的答案中看到的那样,我使用了PPA。我先发表评论,然后回答问题,从问题中回答...因为仅添加PPA并安装4.9并不能启用“使用gcc 4.9”所需的功能。我回答问题后应该删除评论。我道歉。我的答案是应该重点关注。我跳了下结论...并发表了评论。自从我有了专用服务器以来,我实际上使用14.04还是很新的。我要确保没有投票失败,如果可以,我会解决的。
SudoSURoot

@SudoSURoot好吧。即使这样,除非OP在调用gcc-4.9g++-4.9而不是gccor时遇到问题,否则g++我将坚持不更新替代方案。
muru 2015年

我完全明白 我虽然构建了Android系统,但使用了很多$(gcc)和$(g ++)等。因此,我始终必须将默认值设置为要使用的版本。我的某些内核代码无法使用主机gcc-4.8进行编译,因此我不得不进行更新。我只是重复了对我有用的东西。不过,感谢您提醒我...就像我在编辑中所说的那样,根据最近的评论,我可能会过早投反对票,如果可以的话,我会予以解决。发布这些内核源代码时,我已经花了2到3天的时间。每个人都有他们的方式...我只是发现答案越彻底,问题就越少
SudoSURoot 2015年

最新的软件包是GCC-7 ATM
上古野人

5

Ubuntu 16.04及更高版本

您已经可以从默认存储库在Ubuntu 18.04中安装gcc 7.0。要在Ubuntu 17.10、18.04和18.10中安装gcc-7,请打开终端并输入:

sudo apt install gcc-7 

要在Ubuntu 18.04中安装gcc-8,然后打开终端并输入:

sudo apt install gcc-8

要在Ubuntu 19.04中安装gcc-9,然后打开终端并输入:

sudo apt install gcc-9

您可以从ppa:jonathonf / gcc-7.1在Ubuntu 16.04中安装gcc-7。

sudo add-apt-repository ppa:jonathonf/gcc-7.1  
sudo apt update  
sudo apt install gcc-7  

您可以从ppa:jonathonf / gcc-8.0在Ubuntu 16.04中安装gcc-8。

sudo add-apt-repository ppa:jonathonf/gcc-8.0  
sudo apt update  
sudo apt install gcc-8 

3

要专门调用gcc 4.9,请gcc-4.9在命令提示符下使用。

您可以通过在末尾添加连字符和版本号来分别调用已安装的所有gcc版本gcc。在你的情况,gcc-4.8gcc-4.9应提供。在终端中,键入gcc-两次(请注意连字符)和按钮,以查看是否安装了其他版本。

请注意,默认gcc可能仍为4.8。(gcc -v用于验证这一点。)不幸的是,如果您从默认存储库中安装了gcc-4.9,则更改默认设置并非易事,因为它没有添加更新替代项。如果你有兴趣在如何改变默认的,看到的答案,这样这个问题


我如何使项目依赖makefile以及可能使用的其他构建基础结构gcc-4.9来代替gcc
Nickolai Leschov 2014年

1
确保在构建系统中使用gcc-4.9的最佳方法是更改​​默认gcc。按照我在答案中提供的链接进行操作。另外,您也可以创建一个符号链接,尽管我不建议这样做,除非最后一招,因为软件包管理器在更新gcc时可能会抱怨。如果您坚持:sudo rm /usr/bin/gcc; sudo ln -s /usr/bin/gcc-4.9 /usr/bin/gcc。要恢复为gcc-4.8的默认设置,只需将gcc-4.9替换为gcc-4.8。您可能还必须使用g ++和其他GNU编译器执行此操作。
holocronweaver

GCC 4.9在Ubuntu 14.04中不可用(GCC Go编译器除外),因此尽管此答案可能在Ubuntu 14.10中有效,但现在无济于事。:-)
索伦Løvborg

实际上,它可能在Ubuntu 14.04中可用,尽管可能是一个错误:packages.ubuntu.com/trusty/gcc-4.9-base。自四月以来,我一直在使用它。
holocronweaver 2014年

0

好,让我们这样做:

GCC   9 8 7 6 5 4
19.04 M D M M
18.10   D M M M
18.04 P M D M M
16.04 P P P P D M

所有问题:

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.