在Ubuntu上获得+安装gcc / g ++ 4.9?

如何安装最新版本的gcc和g ++?

我正在使用各种C ++ 11和C ++ 1yfunction; 这就是我需要这个的原因。

您可以从Ubuntu Toolchain PPA安装接近上游版本的GCC: https : //wiki.ubuntu.com/ToolChain#PPA_packages

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

在Ubuntu 14.04上测试过。

介绍

教人钓鱼等。

如何构建源包并以易于使用的方式从本地存储库提供它。 这将适用于任何分发,前提是可以满足依赖性/此方法不要求您为每个软件包安装build-deps并使用无关的软件包污染您的计算机,这将让您在debian实验中更新软件包时跟上它们。 只需几分钟即可完成此操作,然后可以重复使用以重建您需要的任何软件包,而无需依赖其他人为您打包ppa或下载一堆不同的.debs

构建vs从debian中提取raw .debs的好处是,这将针对您的发行版中的包构建包,这些包可能在版本/修订版中与用作debian发行版的构建依赖项不同。 这或多或少是向后移植包的过程。 您还可以使用任何ubuntu发行版来构建针对任何其他发行版的目录(​​在这种情况下,目标意味着针对标准存储库包构建),没有任何麻烦。

基本的 – 如何对构建-A-DEB

(不适用于ppa上传 – 这有来自launchpad的贵族要求

可能需要: packaging-dev (拉动build-essential pubilder ubuntu-dev-tools等)

  1. 设置pbuilder(这允许您在chroot中构建一个包,而不会使用构建依赖包来污染您的系统)

    • sudo pbuilder create
    • 如果你想为特定的发行版构建(pbuilder在chroot中使用构建系统版本)你可以使用pbuilder-dist [precise/oneric/trusy/etc...] create
  2. 获取debian源代码

    • pull-debian-source gcc-4.9 [4.9.0-6]具体的debian版本是可选的,但如果你想拉实验/不稳定/测试/稳定修订版会很有用
    • 你也可以从特定的ubuntu发行版中提取它们作为deb-src添加到sources.list并使用sudo apt-get src
  3. 构建包

    • sudo pbuilder build gcc-4.9_4.9.0-6.dsc
    • 在下载的文件中有一个.dsc文件,对于最新的gcc,它是gcc-4.9_4.9.0-6.dsc ,它是一个包描述符文件。 .orig.tar.[gz/xz]是源码tarball。
  4. 创建本地Apt-repository

    • mkdir /convenient/place/for/repo
    • cp /var/cache/pbuilder/result/* /path/to/repo
    • (假设您在repo dir中) apt-ftp archive packages . > Packages apt-ftp archive packages . > Packages
    • (执行此操作的众多方法之一) sudo echo "deb [trusted=yes] file:/local/repo/Packages ./" > /etc/apt/sources.list.d/gcc-repo.list
    • 请注意,您也可以从任何地方下载.debs来执行此步骤(跳过步骤1-3)
  5. 安装

    • apt-get update; apt-get install gcc-4.9 g++-4.9

额外技巧

轻松后向移植依赖性

在构建包时使用自编译包来满足依赖性。 (我设置了文件夹~/pbuilder ~/pbuilder/precise_local (精确的本地包repo)和~/pbuilder/precise_hooks (用于钩子脚本))

将以下内容添加到~/.pbuilderrc

 OTHERMIRROR="deb [trusted=yes] file:///home/user/pbuilder/precise_local ./" BINDMOUNTS="/home/user/pbuilder/precise_local" HOOKDIR="/home/user/pbuilder/precise_hooks" EXTRAPACKAGES="apt-utils" 

precise_hooks创建一个文件D05local (以典型的unix / linux方式,前缀D告诉脚本被挂钩05是自我强加的名称排序而local只是名称,如果你只有一个钩子它不重要它叫什么只要D是前缀

脚本是一个单行

(cd /home/user/pbuilder/precise_local ; apt-ftparchive packages . > Packages)

现在放在precise_local任何包precise_local将满足build-depends。 当反向移植具有依赖性并且还需要向后移植的包时,这对于在本地构建依赖关系树非常有用

VM解决方案

要以更清洁的方式执行此操作,请使用VM映像或LXC容器来控制此混乱。

应用自定义补丁

你可以使用quilt在大多数debian包中应用自定义补丁,quilt补丁可以使用来自大多数VCS的差异(参见: using quilt )

还有一个步骤,您必须重建.dsc.debian.tar.gz 。 我知道最干净的方法是bzr-builddeb它具有最高的成功率IMHO(与git-build-package和其他帮助程序脚本相比)并且比直接调用debuild更清晰( bzr = bazaar canonical的VCS)

  1. sudo apt-get install bzr-builddeb
  2. (假设提取.orig.tar.gz并提取.debian.tar.gz并放入其中
    • bzr init
    • bzr add
    • bzr commit
  3. (可选的)
    • 修改debian/changelog
    • 添加补丁到debian/patches/并修改debian/patches/series (quilt也有实用程序来添加补丁或者你可以动态修改,参见文档)
    • bzr add debian/
    • bzr commit
  4. bzr builddeb -- -S -us -uc这会重建源文件并使其保持未签名状态(PPA /发行版上传需要进行gpg签名,但不能用于私有本地存储库)
  5. cd ../build-area/从上面的第3步继续。

这里的步骤1-4几乎是你需要上传到PPA(他们不采用二进制文件),但你需要一些步骤来满足启动板官僚机构(这个答案提供了解释, 这个有一些链接)

安装

 sudo su - apt-get install build-essential add-apt-repository ppa:ubuntu-toolchain-r/test apt-get update apt-get install gcc-4.9 g++-4.9 cpp-4.9 

之后,如果您检查gcc的版本,您将找到旧版本

 gcc --version 

所以我们可以用简单的符号来修复它

 cd /usr/bin rm gcc g++ cpp ln -s gcc-4.9 gcc ln -s g++-4.9 g++ ln -s cpp-4.9 cpp 

要么

您可以使用update-alternatives进行update-alternatives

//实际上我尝试了符号&我知道这会起作用但是你可以使用符号来获得它没有问题//如果我错了请纠正我

 update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 40 --slave /usr/bin/gcc gcc /usr/bin/gcc-4.9 update-alternatives --config gcc update-alternatives --install /usr/bin/cpp cpp /usr/bin/cpp-4.9 40 --slave /usr/bin/cpp cpp /usr/bin/cpp-4.9 update-alternatives --config cpp update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 40 --slave /usr/bin/g++ g++ /usr/bin/g++-4.9 update-alternatives --config g++ 

要么

你可以编译

 /usr/bin/gcc4.9 filename.c 

gcc-4.9就像gcc-4.8“ubuntu 14.04 gcc”一样,它不是一个很大的参考

证明

Debian提供了一个软件包: https : //packages.debian.org/jessie/gcc-4.9 – 防止导致Ubuntu / Debian兼容性问题; 不要将它添加到您的sources.list。

相反,只需下载所有这些:

 binutils_2.25-5_amd64.deb cpp_4.9.2-2_amd64.deb g++_4.9.2-2_amd64.deb gcc_4.9.2-2_amd64.deb gcc-4.9-base_4.9.2-10_amd64.deb libasan1_4.9.2-10_amd64.deb libatomic1_4.9.2-10_amd64.deb libcilkrts5_4.9.2-10_amd64.deb libgcc1_4.9.2-10_amd64.deb libgcc-4.9-dev_4.9.2-10_amd64.deb libgomp1_4.9.2-10_amd64.deb libitm1_4.9.2-10_amd64.deb liblsan0_4.9.2-10_amd64.deb libmpfr4_3.1.2-2_amd64.deb libquadmath0_4.9.2-10_amd64.deb libstdc++-4.9-dev_4.9.2-10_amd64.deb libstdc++6 libtsan0_4.9.2-10_amd64.deb libubsan0_4.9.2-10_amd64.deb 

来自Debian的服务器,例如:

http://ftp.us.debian.org/debian/pool/main/b/binutils/binutils_2.25-5_amd64.deb

然后安装它们,例如: $ for package in *.deb; do sudo dpkg --install "$package"; done $ for package in *.deb; do sudo dpkg --install "$package"; done

[更容易运行该bash循环几次,直到涵盖所有依赖项,而不是记住您下载它们的顺序!]

目前(20141102)添加PPA并调用上述命令apt-get install gcc-4.9 g++-4.9 cpp-4.9将打印出大量建议的包。 除了libvtv0-dbg(具有依赖冲突)之外,安装它们全部:

 apt-get install gcc-4.9 g++-4.9 cpp-4.9 gcc-4.9-locales g++-4.9-multilib libstdc++6-4.9-dbg gcc-4.9-multilib libgcc1-dbg libgomp1-dbg libitm1-dbg libatomic1-dbg libasan1-dbg liblsan0-dbg libtsan0-dbg libubsan0-dbg libcilkrts5-dbg libquadmath0-dbg lib32stdc++6-4.9-dbg libx32stdc++6-4.9-dbg 

(跳过-dbg包,如果它们对您不感兴趣),然后执行apt-get dist-upgrade --auto-remove 。 最后一步基本上将用gcc-4.9替换你的gcc-4.8(但不卸载旧版本),同时引入最新的fortran编译器。

我不得不强制gcc-4.9-base软件包的版本超过你发布的错误消息。 然后安装工作

 sudo apt-get install gcc-4.9-base=4.9.2-0ubuntu1~14.04 

现在你可以做常规了

 sudo apt-get install gcc-4.9 

安装GCC GNU 4.9

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

从默认应用程序列表中删除以前的gcc版本(如果已存在)

 sudo update-alternatives --remove-all gcc 

使GCC 4.9成为系统上的默认编译器

 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 20 sudo update-alternatives --config gcc 

最新更新GCC 4.9.1是GCC 4.9分支的错误修复版本,其中包含对GCC 4.9.0中的回归和严重错误的重要修复,自上一版本以来修复了超过88个错误。 除此之外,GCC 4.9.1版本还支持Fortran中的OpenMP 4.0,而不仅仅支持C和C ++

注意:检查ubuntu 14.04 LTS