在Debian上安装gcc 4.8

pax*_*blo 27 debian gcc c++11

我想开始使用一些较新的C++ 11特性,看来最好的支持是gcc 4.8,Squeeze附带4.4.5.

但是,我不想对我当前的设置造成任何"损害".让两个版本的gcc并排运行的最佳方法是什么?我主要关注的是大量的依赖关系,将它们全部带入我当前的系统可能会使它不稳定.

有没有人设法做到这一点,涉及的步骤是什么?

如果做不到这一点,我可能只会创建一个虚拟机并运行一个"不稳定"的Debian,但它不是一个理想的解决方案.

Jon*_*ely 34

如果你从源代码安装GCC,请确保你没有安装它/usr,它不会搞砸任何东西.如果你把它作为你自己的用户安装,而不是root,那么就没有机会弄乱系统.

请参阅http://gcc.gnu.org/wiki/InstallingGCC,了解几乎无懈可击的最小配置.

我有各种版本作为我的用户构建并安装在~/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 "$@"
Run Code Online (Sandbox Code Playgroud)

  • 我发现包装脚本特别有用 (3认同)

zek*_*k19 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
Run Code Online (Sandbox Code Playgroud)

/ etc/apt/preferences被编辑为:

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

Package: gcc*
Pin: release n=jessie
Pin-Priority: 910
Run Code Online (Sandbox Code Playgroud)

然后,

$ sudo aptitude update
$ sudo aptitude install gcc/jessie
Run Code Online (Sandbox Code Playgroud)

此时我选择了第二个呈现选项来完全解决依赖关系.


JKo*_*Kor 6

Debian的名字是gcc-4.8(或者是c ++编译器,g ++ - 4.8).只要不将它重命名为g ++,安装这些软件包就不会搞砸你的操作系统.该包被列为实验性的.
有关包裹的信息在这里.

更新:g ++ - 4.8现在正在测试中,但更新的软件包处于不稳定状态