如何安装gcc-4.8

我在我的系统上检查了gcc版本。 目前是4.6.3。 我看到gcc-4.8已经发布了。 我尝试了以下命令,但没有成功:
sudo apt-get install gcc (gcc is already the newest version)
sudo apt-get install gcc-4.8 (unable to locate package)

有人知道如何在12.04上安装这个软件包吗?

@maggotbrain的回答对我有用,尽管我不得不添加:sudo apt-get install gcc-multilib,因为我遇到了这个问题: http://superuser.com/questions/432202/make-fails-compiling-gcc - skillman
2未来的谷歌用户注意: 如果你收到类似于undefined reference to `lexer_line'的错误信息,那是因为缺少工具:bison和flex。请执行以下命令安装:sudo apt-get install bison sudo apt-get install flex,如此链接所指出的:http://stackoverflow.com/questions/4262531/trouble-building-gcc-4-6 - virtualPN
2个回答

现在12.04 Precise版是否有GCC-4.8可用?

更新:截至2013年6月5日,目前12.04(Precise)版本已经有gcc 4.8.1的发布,可以在https://launchpad.net/~ubuntu-toolchain-r/+archive/test上获取。

简短回答是:gcc-4.8目前可以通过工具链PPA在12.04(Precise)上使用或者通过编译源代码来获取(详见下文)。

发布公告

关于gcc-4.8发布的公告是在3月22日进行的,所以您可能暂时还无法在官方软件库中找到。

然而,看起来Launchpad确实有一个PPA可用于toolchain测试构建,其中包括gcc-4.8,链接在这里:https://launchpad.net/~ubuntu-toolchain-r/+archive/test 根据changelog和软件包列表,有适用于i386、amd64、arm和powerpc的deb包,并且是针对raring 13.04构建的。
12.04最新可用的gcc版本是4.8.1,可以在toolchain PPA中获取。 添加toolchain/test PPA: 要将PPA添加到您的系统中,请打开终端(Ctrl+Alt+t)并运行以下命令:
sudo apt-get install python-software-properties
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.8
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 50

你还会被提示安装一些建议的软件包。 这些软件包是安装gcc-4.8的推荐但可选项。

gcc-4.8相比于gcc-4.7.2有哪些不可用的C++功能?

根据GNU.ORG的说法,gcc-4.7支持许多C++11特性。
截至gcc-4.8发布时,gcc-4.7不支持64个特性中的8个(请参见C++0x/C++11在GCC中的支持)。
这些特性包括:
语言特性 - Rvalue引用*this - 广义属性 - 对齐支持 - 继承构造函数 并发性 - 双向栅栏 - 内存模型 - 放弃进程和at_quick_exit - 线程本地存储
有关gcc-4.8中所有更改的完整列表,请参阅Changelist。

我现在需要在12.04 Precise上使用这些gcc功能。我该如何获取它们?

从源代码构建GCC-4.8:

如果你现在需要在12.04上使用gcc-4.8,你唯一的选择就是从源代码构建

在安装之前,请阅读GCC安装常见问题解答

你可以从gnu.org的镜像站点或直接从他们的SVN服务器下载gcc-4.8。

以下是一个编译源代码的步骤示例(有关更多详细信息,请参阅此处)。请注意,这些步骤可能因系统和个人偏好而有所不同。

  1. 下载源代码

    • 创建一个构建目录( mkdir gcc-build && cd gcc-build
    • 下载源文件:wget http://www.netgull.com/gcc/releases/gcc-4.8.0/gcc-4.8.0.tar.bz2(根据需要使用适当的镜像站点来调整此命令)。
    • 解压文件(tar -xvjf <文件名>
  2. 安装一些附加库(sudo apt-get install libgmp-dev libmpfr-dev libmpc-dev libc6-dev

  3. 编译源码:./gcc-4.8.0/configure --prefix=/app/gcc/4.8.0
  4. 运行make(这将需要一些时间来完成。可以去冲杯咖啡或烤些饼干;-))
  5. 安装代码:sudo make install
一旦此过程完成,请运行命令gcc --version以验证安装是否成功完成。您应该会看到类似以下输出的内容:
maggotbrain@foucault:~$ gcc --version
gcc (Linaro 4.8.0) 4.8.0
Copyright (C) 2013 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.

底线是:感谢那些为你提供易于安装的Ubuntu后端支持的人们。在运行make时,给他们一些你烤的饼干吧。;-)

优秀的回答,除了:E: 无法找到软件包 gcc-4.8 - John Dibling
3安装额外的库对我来说还不够,但运行./contrib/download_prerequisites.sh解决了这个问题(来源于http://stackoverflow.com/questions/9253695/building-gcc-requires-gmp-4-2-mpfr-2-3-1-and-mpc-0-8-0)。 - Gauthier
7注意:除了gcc-4.8之外,我还需要安装g++-4.8软件包才能编译C++代码。否则,我会遇到编译错误:“gcc: error trying to exec 'cc1plus': execvp: No such file or directory 4.8”。 - Boris Dalstein
我成功地在Precise上安装了gcc4.8。 - Homunculus Reticulli
对我来说在amd64上不起作用,libgcc1=1:4.8.1-2ubuntu1~12.04:i386不存在。 - pts
@pts 我建议您提交一个新的问题,提及这个特定的问题,因为我还没有研究过32位和64位的问题。很抱歉我无法提供更多帮助。 - Kevin Bowen
我应该在哪里运行make命令? - polkovnikov.ph
对于那些遇到了@Boris问题的人(就像我一样),这里是如何安装g++的方法:http://askubuntu.com/questions/175571/why-cant-i-install-g - FindOutIslamNow
1@ John Dibling - 确实,该公开方法确实安装了文件,但你从未构建任何软件包或安装任何内容...因此你无法找到它们 :-). 嗯,有一种快速的方法可以使用[链接](https://launchpad.net/ubuntu/+source/gcc-4.8)中的debian文件夹自动构建软件包。我已经成功地为其他软件包执行过此操作。此解决方案将安装所有相关的软件包,包括g++等... - Antonio
哥们儿,你真是太给力了!谢谢你的帮助! - Alireza Sanaee
我按照PPA方法进行操作,以下是我在安装过程中终端输出的一部分内容:"注意,选择 'gcc-3.4-hppa64' 以匹配正则表达式 'gcc-3.4'。" 我在 "/usr/bin" 目录下没有看到 "gcc-3.4",也没有运行过 $ gcc-3.4。我错过了什么吗? - undefined

所以上面的答案是有效的,至少对于手动安装来说是有效的。尽管在执行了sudo make install之后,运行gcc仍然只会运行库存版本4.6.3。即使尝试gcc-4.8或gcc-4.8.0也不起作用。运行/app/gcc/4.8.0/bin/gcc似乎是唯一有效的方法。我觉得这有点糟糕,但至少能用。

6[:facepalm:] 在你称某些东西为“糟糕”之前,也许你应该提升一下你的操作系统知识。你可以从阅读关于PATH(路径)概念的相关资料开始:http://en.wikipedia.org/wiki/PATH_(variable) - pszilard
1当然,如果您没有使用带有DEBIAN/postinst脚本的软件包安装,您需要通过update-alternatives命令手动设置系统要使用的默认版本。如果您使用了--prefix=/usr选项,则无需干预PATH路径。 - Antonio