我想开始尝试一些较新的C++11特性,最好的支持是在gcc 4.8上,而Squeeze则使用4.4.5。
然而,我不想对我的当前设置造成任何"损坏"。有什么最好的方法可以同时运行两个版本的gcc?我主要担心的是依赖项数量很大,将它们全部引入到我的当前系统中可能会使其不稳定。
是否有人成功做到了这一点,步骤是什么?
如果失败,我可能只需创建一个虚拟机,在其中运行一个"不稳定"的Debian,但这并不是一个理想的解决方案。
/usr
,这样就不会弄乱任何东西。如果你将其安装为自己的用户,而不是root
,那么几乎不可能搞砸系统。~/gcc/4.X
中安装了它们,其中X是不同的版本号。LD_LIBRARY_PATH
或其他解决方案来确保可执行文件可以找到来自4.8的库,请参见libstdc++ FAQ和手册中链接到的页面。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 "$@"
我曾经遇到过同样的问题,但是不想完全升级到testing版本。
Jessie (testing)现在包含了符合C++11标准的g++-4.8。
我使用了以下方式中的apt-pinning:
将jessie源添加到了/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
在这个时候,我选择了第二个提供的选项来完全解决依赖关系。
n=jessie
,根据 man apt_preferences
,发行版代号是 n=
。此外,对于 a
对我来说不起作用。 - Pietro Saccardi简短回答:
升级到testing版本,它非常稳定并且提供了多个并发gcc版本。Ubuntu也是类似的,在12.10版本中我可以同时使用gcc/g++ 4.4、4.5、4.6和4.7。
尝试Debian后备存档,可能有gcc 4.8的端口。
使用虚拟化:我更喜欢基于内核的libvirt / kvm,因为它在Linux上非常轻量级。我的amd64服务器有另外两个32位安装版本,正是出于这个原因。
不是一个SO问题...
你尝试过使用chroot安装更新的Debian版本吗?
你可以随意尝试而不用担心破坏你的工作系统。
安装支持你所需gcc版本的Debian版本。
手动安装gcc版本,而不影响你的工作系统。 http://wiki.blender.org/index.php/Dev:Doc/Building_Blender/Linux/Chroot