在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
等)
-
设置pbuilder(这允许您在chroot中构建一个包,而不会使用构建依赖包来污染您的系统)
-
sudo pbuilder create
, - 如果你想为特定的发行版构建(pbuilder在chroot中使用构建系统版本)你可以使用
pbuilder-dist [precise/oneric/trusy/etc...] create
-
-
获取debian源代码
-
pull-debian-source gcc-4.9 [4.9.0-6]
具体的debian版本是可选的,但如果你想拉实验/不稳定/测试/稳定修订版会很有用 - 你也可以从特定的ubuntu发行版中提取它们作为deb-src添加到sources.list并使用
sudo apt-get src
-
-
构建包
-
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。
-
-
创建本地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)
-
-
安装
-
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)
-
sudo apt-get install bzr-builddeb
- (假设提取
.orig.tar.gz
并提取.debian.tar.gz
并放入其中-
bzr init
-
bzr add
-
bzr commit
-
- (可选的)
- 修改
debian/changelog
- 添加补丁到
debian/patches/
并修改debian/patches/series
(quilt也有实用程序来添加补丁或者你可以动态修改,参见文档) -
bzr add debian/
-
bzr commit
- 修改
-
bzr builddeb -- -S -us -uc
这会重建源文件并使其保持未签名状态(PPA /发行版上传需要进行gpg签名,但不能用于私有本地存储库) -
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