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

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

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.8。 gcc-4.9,gcc-4.8,gcc-4.7,gcc-4.6都在Ubuntu主仓库中。

@Dumindu但是我该如何专门使用gcc-4.9?

卸载其他人并安装4.9。

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

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

#1 楼

正确安装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


--slaveg++会导致g++gcc,至相同版本。但是,目前,gcc-4.9将是您在update-alternatives中配置的唯一版本,因此请在update-alternatives中添加4.8,因此实际上可以使用以下方法:然后,您可以检查设置了哪一个,并使用以下命令来回更改:

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


注意:您可以跳过安装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
2015年2月15日在17:16



尝试sudo apt-get -f install

– SudoSURoot
15-10-25在2:18

这很完美。另外,用5代替4.9可以使GCC 5在Ubuntu上运行。 (我的开发团队现在按照您的方法同时运行4.9和5。)谢谢,+ 1!

– CodeMouse92
2015年11月6日在16:52

@hwat现在应该适用于gcc-6。

–edwinksl
16年5月5日在2:38

这对我帮助了很多次,但是我总是忘记了-确保将相同的解决方案应用于您可能使用的GNU编译器集合中的其他实用程序!例如,如果您不这样做,GCOV将抱怨版本不匹配,可能会产生不正确的数据。

–托比
16年11月10日在10:39

#2 楼

使用工具链测试构建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)可用,但其他前端不可用。我不知道为什么。

评论


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

–muru
15年2月14日在22:18

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

– SudoSURoot
2015年2月14日在22:28



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

–muru
15年2月14日在22:31

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

– SudoSURoot
15年2月14日在22:40

最新的包装是gcc-7 ATM

–古怪的长老
16年11月29日在17:50

#3 楼

终极mega master兼容性表
行吧:
               GCC            clang
        +----------------+-----------------+
        | 10 9 8 7 6 5 4 | 11 10 9 8 7 6 5 |
+-------+----------------+-----------------+
| 20.10 |  D M M M       |  D  M M M M M   |
| 20.04 |  P D M M       |     D M M M M   |
| 19.10 |    D M M       |                 |
| 19.04 |    M D M M     |                 |
| 18.10 |      D M M M   |                 |
| 18.04 |  P P M D M M   |       M M M D M |
| 16.04 |    P P P P D M |                 |
+-------+----------------+-----------------+



D:默认GCC
sudo apt-get update
sudo apt-get install gcc g++
gcc --version

无论gcc软件包是什么别名:https://packages.ubuntu.com/search?keywords=gcc并还出现在清单中:如何列出默认安装的软件包?


M:存在于主存储库中
sudo apt-get update
sudo apt-get install gcc-X g++-X
gcc-X --version

具有给定GCC版本的所有Ubuntu版本,例如对于GCC 7:https://packages.ubuntu.com/search?keywords=gcc-7
这些软件包的次要版本可能会不时更新,例如8.3.0至8.4.0。


P:ppa:ubuntu-toolchain-r/test,它由Ubuntu所有人所有,因此尽管可能不稳定,但可以相信它不是病毒:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-X g++-X
gcc-X --version

完整列表:https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test
这些软件包的次要版本可能会不时更新,例如8.3.0至8.4.0。


所有问题:

在Ubuntu 18.04上安装gcc-9?
如何安装gcc-7还是clang 4.0?
在Ubuntu 18.04上安装gcc-9?
在Ubuntu 18.04中可用的GCC和clang版本是什么?

如何将非默认GCC设置为是默认设置吗?例如,您安装了/usr/bin/gcc-7,但是您想在运行/usr/bin/gcc时使用它而不是gcc main.c
请使用其他回答中提到的sudo update-alternatives:https://askubuntu.com/a/581497/52975它会为您创建所需的符号链接。
另请参阅:“ update-alternatives”究竟能做什么?
如何从源代码构建自己的工具链
如果PPA不是旧的/新的足够满足您的需求,请参见:

https://stackoverflow.com/questions/847179/multiple-glibc-libraries-on-a-single-host/52454603#52454603
https: //stackoverflow.com/questions/26305738/can-i-build-gcc-for-arm-with-an-x64-one/26306591#26306591

旧版GCC版本的问题

Ubuntu 20.04-gcc ver低于gcc-7的版本
如何使用旧版GCC


评论


如果我只想安装一个编译器版本怎么办?我该如何摆脱年龄较大的孩子?别人建议您使用update-alternatives命令做什么,而答案中却没有?

–没人
19/12/22在5:53



为什么Ubuntu 18.10和GCC 9会有漏洞?不支持吗?

–没人
19/12/22在7:36

@NooneAtAll update-alternatives在/ usr / bin / gcc与您选择的GCC之间创建符号链接。如果要将gcc设置为非默认GCC,则应将其与以下答案结合使用:askubuntu.com/questions/233190/…空盒表示不支持上述方法。值得注意的是,PPA似乎仅支持Ubuntu的LTS版本。除了最新版本,我不建议使用非LTS版本的Ubuntu。

– Ciro Santilli郝海东冠状病六四事件法轮功
19/12/22在8:47

#4 楼

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  

可以同时安装多个版本的gcc。您可以通过使用update-alternatives命令来确定默认的gcc版本,以确定通用名称引用的是哪个实际文件,例如gcc引用的是哪个实际文件。有关更多信息,请参见以下问题的答案:如何在Ubuntu中更改默认的GCC编译器?。

#5 楼

要专门调用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
14年7月13日在13:41

确保在构建系统中使用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
14年7月13日在20:29

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

–SørenLøvborg
2014年8月2日在17:43

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

–holocronweaver
2014年8月3日,11:46