当前位置: 首页>>技术教程>>正文


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

, , ,

问题描述

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

我正在使用各种C++ 11和C++ 1y功能;这就是为什么我需要这个。

最佳解决方法

您可以从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上测试过。

次佳解决方法

Intro

教一个人钓鱼等等。

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

构建与从debian下拉raw.debs的好处是,这将构建针对您的发行版中软件包的软件包,这些软件包的版本/修订可能与Debian发行版中用作build-dependencies的软件包不同。这是more-or-less用于反向包装的过程。您也可以使用任何ubuntu发行版来构建针对任何其他发行版的包(本例中的目标是指针对标准存储库包进行构建),而不用麻烦。

Basic-How-to-Build-a-deb

(不适用于ppa上传 – 这对启动板具有贵族要求

Probably-required:packaging-dev(其中包括build-essential pubilder ubuntu-dev-tools)

  1. 设置pbuilder(这可以让你在chroot中构建一个包,而不会用build-dependency包来污染你的系统)

    • 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修订版是可选的,但如果您想要将实验/不稳定/测试/稳定版本

    • 您也可以将pull from specific ubuntu distros作为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]是源代码压缩包。

  4. 创建本地Apt-repository

    • mkdir /convenient/place/for/repo

    • cp /var/cache/pbuilder/result/* /path/to/repo

    • (假设你在回购目录中)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

额外的技巧

轻松backporting依赖

在构建包时使用self-compiled包来满足依赖关系。 (我已经设置了文件夹~/pbuilder ~/pbuilder/precise_local(精确的本地包回购)和~/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是self-imposed name-ordering和local仅仅是名字,如果你只有一个钩子是什么并不重要了所谓只要D是前缀

该脚本是one-liner

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

现在任何放置在precise_local中的包都将满足build-depends。这对于在back-porting包中具有也需要backporting的依赖关系时在本地构造依赖关系树非常有用

VM解决方案

要以更简洁的方式来完成此操作,请使用虚拟机映像或LXC容器来监控这个混乱。

应用自定义修补程序

您可以使用quilt在大多数debian软件包中应用自定义修补程序,被动修补程序可以使用大多数VCS的差异(请参阅:using quilt)

还有一个步骤,您必须重建.dsc.debian.tar.gz。 Cleanest-way我知道的是bzr-builddeb它具有最高的成功率恕我直言(与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(被子还可以用于添加修补程序或供您随时修改,请参阅文档)

    • bzr add debian/

    • bzr commit

  4. bzr builddeb -- -S -us -uc这将重建源文件并保留其未签名(PPG /发行版上载需要gpg签名,但不适用于私有本地回购)

  5. cd ../build-area/从上面的步骤3继续。

这里的步骤1-4几乎是你需要上传到PPA(他们不需要二进制文件),但你需要一些步骤来满足launchpad的官僚作风(这个answer提供了一个解释,this有一个链接)

第三种解决方法

安装

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

or

你可以使用更新

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++

or

你可以编译

/usr/bin/gcc4.9 filename.c

gcc-4.9就像gcc-4.8“ubuntu 14.04 gcc”一样,这不是一个大问题

package-management,gcc,g++,ubuntu

第四种方法

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

[只是简单地运行这个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(但不能卸载旧版本),并同时提取up-to-date 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分支的bug-fix版本,其中包含对GCC 4.9.0中的回归和严重错误的重要修复,自上一版本以来修复了88个以上的错误。除此之外,GCC 4.9.1版本还支持Fortran中的OpenMP 4.0,而不仅仅支持C和C++

注意:检查Ubuntu 14.04 LTS

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/852.html,未经允许,请勿转载。