我想开始使用一些较新的C ++ 11功能,看来最好的支持是gcc 4.8,Squeeze附带4.4.5。
但是,我不想对我当前的设置造成任何“损害”。让两个版本的gcc并行运行的最佳方法是什么?我主要关心的是大量的依赖关系,将它们全部放到我当前的系统中可能会使它不稳定。
有没有人设法做到这一点,涉及的步骤是什么?
如果做不到这一点,我可能只会创建一个虚拟机并运行一个“不稳定”的Debian,但它不是一个理想的解决方案。
答案 0 :(得分:34)
如果您从源代码安装GCC,请确保不要将其安装到/usr
,并且不会弄乱任何内容。如果您将其安装为您自己的用户,而不是root
,那么就没有可能搞乱系统。
请参阅http://gcc.gnu.org/wiki/InstallingGCC了解几乎无懈可击的最低配置。
我有各种版本作为我的用户构建并安装在~/gcc/4.X
中用于各种X。
使用该设置唯一需要注意的是新版本的共享库不在动态链接器的默认搜索路径中,因此您需要使用LD_LIBRARY_PATH
或其他一些解决方案来确保可执行文件从4.8中查找库,请参阅libstdc++ FAQ及其链接到的页面manual
我使用包装器脚本调用g++11
,它只是用-std=gnu++11
调用新版本的GCC,并将一个标志传递给链接器,告诉它设置可执行文件中4.8 libs的路径: / p>
$HOME/gcc/4.8/bin/g++ -Wl,-rpath,$HOME/gcc/4.8/lib64 -std=gnu++11 -Wall -Wextra -g "$@"
答案 1 :(得分:16)
我遇到了同样的问题,并且不想完全升级到测试。
Jessie(测试)现在包含符合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
此时我选择了第二个呈现选项来完全解决依赖关系。
答案 2 :(得分:6)
Debian的软件包名为gcc-4.8(或c ++编译器,g ++ - 4.8)。只要不将它重命名为g ++,安装这些软件包就不会搞砸你的操作系统。该套餐虽然列为实验性的 有关该软件包的信息为here。
答案 3 :(得分:2)
快速的:
只需升级到测试,它是坚如磐石的,并为您提供几个并发的gcc版本。类似于Ubuntu,在12.10我同时拥有gcc / g ++ 4.4,4.5,4.6和4.7。
尝试使用Debian backports存档,它可能有一个gcc 4.8的端口。
使用虚拟化:我更喜欢libvirt / kvm,它在Linux上非常轻巧,因为它基于内核。由于这个原因,我的amd64服务器还有另外两个32位安装。
不是真的问题......
答案 4 :(得分:1)
您是否尝试chroot安装较新的Debian风格?
你可以毫无畏惧地玩弄你的工作系统。
安装支持gcc版本的Debian风格。
手动安装gcc版本,不会影响您的工作系统。 http://wiki.blender.org/index.php/Dev:Doc/Building_Blender/Linux/Chroot