问题描述
我如何安装最新版本的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
)
-
设置pbuilder(这可以让你在chroot中构建一个包,而不会用build-dependency包来污染你的系统)
-
sudo pbuilder create
, -
如果你想构建一个特定的发行版,(pbuilder在chroot中使用构建系统版本),你可以使用
pbuilder-dist [precise/oneric/trusy/etc...] create
-
-
获取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
-
-
构建包
-
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]
是源代码压缩包。
-
-
创建本地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)
-
-
安装
-
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)
-
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
(被子还可以用于添加修补程序或供您随时修改,请参阅文档) -
bzr add debian/
-
bzr commit
-
-
bzr builddeb -- -S -us -uc
这将重建源文件并保留其未签名(PPG /发行版上载需要gpg签名,但不适用于私有本地回购) -
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”一样,这不是一个大问题
第四种方法
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