在Debian上安装gcc 4.8

问题描述:

我想开始使用一些较新的C++ 11功能,看来最好的支持是使用gcc 4.8,而Squeeze使用4.4.5。在Debian上安装gcc 4.8

但是,我不想对我当前的设置造成任何“损害”。 两种版本的并行运行的最佳方式是什么?我主要关注大量的依赖关系,并将它们全部引入到我当前的系统中可能会使其不稳定。

有没有人设法做到这一点,涉及哪些步骤?

如果不这样做,我可能只是创建一个虚拟机,然后运行一个“不稳定的”Debian,但这是一个不太理想的解决方案。

如果你从源代码安装GCC只是确保你不将它安装到/usr,它不会弄乱任何东西。如果你将它安装成你自己的用户,而不是root,那么就没有可能搞乱系统了。

请参阅http://gcc.gnu.org/wiki/InstallingGCC几乎防白痴的最小配置。

我有作为我的用户构建的各种版本,并安装在各种X的~/gcc/4.X

需要注意的是,新版本的共享库不在动态链接器的默认搜索路径中,因此您需要使用LD_LIBRARY_PATH或其他一些解决方案来确保可执行文件找到从4.8库,看到libstdc++ FAQ并将其链接到在manual

我使用包装脚本调用g++11它只是与-std=gnu++11调用GCC的新版本,并传递标志的链接,告诉它设置路径的页面到可执行文件中的4.8库:

$HOME/gcc/4.8/bin/g++ -Wl,-rpath,$HOME/gcc/4.8/lib64 -std=gnu++11 -Wall -Wextra -g "[email protected]" 
+3

我发现特别有用的包装脚本 – 2014-04-04 12:52:43

快速的:

  1. 只要升级到测试,它是坚如磐石,为您提供多个并发版本的GCC。对于Ubuntu,类似于12.10,我有gcc/g ++ 4.4,4.5,4.6和4.7的并行。

  2. 尝试使用Debian的backports归档文件,它可能有一个gcc 4.8的端口。

  3. 使用虚拟化:我更喜欢libvirt/kvm,它在Linux上非常轻巧,因为它是基于内核的。出于这个原因,我的amd64服务器有两个其他的32位安装。

  4. 不是一个真正的SO问题...

+6

从FAQ:“程序员常用的软件工具”。如果gcc不符合该描述,我会吃我的帽子:-) – paxdiablo 2013-05-01 01:53:51

+3

SO是编程,我看到主持人黑手党将大量类似的问题提交给超级用户。就我个人而言,我喜欢这里的问题,并认为SE网站变得太细。只是说我或多或少地期待这个关闭/移动。 – 2013-05-01 01:55:46

Debian有名称GCC-4.8下的包(或C++编译器,G ++ - 4.8)。只要你不把它重命名为g ++,安装这些软件包不会混淆你的操作系统。该软件包虽然列为实验。
包装上的信息是here

更新:G ++ - 4.8现在在testing,而是一个更新包是unstable

+0

虽然他跑稳了。 – 2013-05-01 01:53:14

+0

如果他愿意,他可以配置他的系统来查找非稳定的包。看看[这个问题在ServerFault](http://serverfault.com/questions/22414/how-can-i-run-debian-stable-but-install-some-packages-from-testing)(阅读接受的答案)。 – JKor 2013-05-01 01:57:46

+1

当然 - 我知道这是因为自1995年以来我一直是Debian开发人员/维护人员。这仅仅是因为稳定和测试/不稳定之间的差距可能会变得很大,所以这不是因为模糊不清。使用测试作为基础更容易,这是我多年来一直在做的事情。但是YMMV和他也是。 – 2013-05-01 02:02:14

你试过chroot安装更新Debian的味道?

我有同样的问题,并不想完全升级到测试。

Jessie(testing)现在包含符合C++ 11的g ++ - 4.8。

我用apt钉扎以下列方式:

加入甲源杰西在/etc/apt/sources.list:

deb http://ftp.uk.debian.org/debian/ jessie main non-free contrib 

的/ etc/apt/preferences中被编辑为例如:

Package: * 
Pin: release n=wheezy 
Pin-Priority: 900 

Package: gcc* 
Pin: release n=jessie 
Pin-Priority: 910 

然后,

$ sudo aptitude update 
$ sudo aptitude install gcc/jessie 

在这一点上,我选择了第二个呈现的选项来完全解决依赖关系。

+1

根据'man apt_preferences',它应该是'n = jessie',distro codename是'n ='。此外,它不适用于'a'。 – 2014-11-07 22:22:11

+1

这些指令通过删除现有的gcc 4.7安装和不安装更新的gcc来破解Debian 7.8.0(wheezy)。使用apt-get来尝试重新安装原始的gcc 4.7以恢复到工作的开发者状态是不可能的(或者它不工作)。 – 2015-02-06 00:44:13