我正在使用各种C++11和C++1y的特性,这就是为什么我需要它们的原因。
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install g++-4.9
gcc-4.9
只适用于 Ubuntu 14.04。对于其他版本,最新可用的版本是 gcc-4.8
。我搜索了一下,没有找到适用于早期版本 Ubuntu 的 gcc-4.9
的 ppa。总有一种从源代码编译的选择,但从阅读说明中我得出结论,这对像我这样没有经验的人来说是一个令人望而生畏的过程,因此放弃了这个想法。 - Nickolai Leschovapt-get update
! - Vincent Robert/usr/bin/g++
的目标从/usr/bin/g++-4.8
更改为/usr/bin/g++-4.9
。...或者保持不变,直接调用g++-4.9
。最后:std::regex支持。 - DavidOCXX=/usr/bin/g++-4.9
来指定你的配置脚本应该使用哪个编译器。这样,你就可以通过 CXX=/usr/bin/g++-4.9 ./configure --prefix=/usr/local
来配置脚本。这样一来,你就不需要去处理备选项或符号链接了。 - walkerosgcc-4.9
。请参考这篇帖子:http://askubuntu.com/a/581497/378854 - phil294授人以鱼不如授人以渔等等。
如何以apt友好的方式在本地存储库中构建源包并提供服务。只要满足依赖关系,这将适用于任何发行版。此方法不需要您为每个软件包安装构建依赖项并污染计算机的额外软件包,这将让您随着debian experimental中软件包更新而保持同步。这只需要几分钟的时间进行一次操作,然后可以重复使用它来重新构建您需要的任何软件包,而无需依赖其他人打包ppa或下载一堆不同的.deb文件。
与从debian拉取裸.deb文件相比,构建的好处是这将构建软件包以针对您发行版中的软件包,这些软件包的版本/修订版本可能与debian发行版的构建依赖项不同。这或多或少是反向移植软件包的过程。您还可以使用任何ubuntu发行版来构建针对任何其他发行版(在这种情况下,目标是指针对标准存储库软件包进行构建)的软件包,而不会有任何麻烦。
(不适用于ppa上传-这需要来自launchpad的官僚要求
可能需要的包:packaging-dev
(会引用其他包,包括build-essential pubilder ubuntu-dev-tools
)
设置 pbuilder(这样你可以在 chroot 中构建软件包,而不会污染系统的构建依赖包)
sudo pbuilder create
pbuilder-dist [precise/oneric/trusy/etc...] create
获取 Debian 源码
pull-debian-source gcc-4.9 [4.9.0-6]
特定的 Debian 修订版是可选的,但如果你想获取实验性/不稳定/测试/稳定的修订版,它可能会有用sudo apt-get src
来从特定的 Ubuntu 发行版中获取 构建软件包
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 仓库
mkdir /方便的/存放/仓库的位置
cp /var/cache/pbuilder/result/* /路径/to/仓库
apt-ftp archive packages . > Packages
sudo echo "deb [trusted=yes] file:/本地/仓库/Packages ./" > /etc/apt/sources.list.d/gcc-repo.list
安装
apt-get update; apt-get install gcc-4.9 g++-4.9
在构建软件包时,使用自编译的软件包来满足依赖关系。(我已经设置了文件夹~/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"
.dsc
和 .debian.tar.gz
。我知道的最干净的方法是使用 bzr-builddeb
,在我看来它的成功率最高(与 git-build-package 和其他辅助脚本相比),而且比直接调用 debuild
要更清洁一些(bzr
= bazaar canonical 的版本控制系统)。
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步继续。sudo pbuilder build gcc-4.9_4.9.0-6.dsc
会失败。 - jfssudo 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 --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 --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",它们之间没有太大区别。
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
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
sudo apt-get install gcc-4.9-base=4.9.2-0ubuntu1~14.04
sudo apt-get install gcc-4.9
libstdc++6
,这是一个依赖项。由于某种原因,它想要使用一个旧版本,而它认为这是一个更新的版本,所以如果不强制,它就无法升级。 - Emresudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.9
sudo update-alternatives --remove-all gcc
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 20
sudo update-alternatives --config gcc