28

我想开始尝试一些较新的 C++11 功能,似乎最好的支持是 gcc 4.8,而 Squeeze 附带 4.4.5。

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

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

如果做不到这一点,我可能会创建一个 VM 并在其下运行一个“不稳定”的 Debian,但它是一个不太理想的解决方案。

4

5 回答 5

34

如果您从源代码安装 GCC,请确保您没有安装它/usr,它不会搞砸任何事情。如果您以自己的用户身份安装它,而不是root,那么搞砸系统的可能性为零。

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

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

使用该设置唯一要注意的是新版本的共享库不在动态链接器的默认搜索路径中,因此您需要使用LD_LIBRARY_PATH或其他一些解决方案来确保可执行文件从 4.8 中找到库,请参阅libstdc++ 常见问题解答及其在手册中链接到的页面

我使用一个包装脚本调用g++11,它简单地调用新版本的 GCC-std=gnu++11并将一个标志传递给链接器,告诉它设置可执行文件中 4.8 库的路径:

$HOME/gcc/4.8/bin/g++ -Wl,-rpath,$HOME/gcc/4.8/lib64 -std=gnu++11 -Wall -Wextra -g "$@"
于 2013-05-01T07:49:54.707 回答
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

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

于 2014-10-02T18:22:13.983 回答
6

Debian 的软件包名称为 gcc-4.8(或者对于 c++ 编译器,g++-4.8)。只要您不将其重命名为 g++,安装这些软件包就不会弄乱您的操作系统。该软件包被列为实验性的。
包信息在这里

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

于 2013-05-01T01:52:44.643 回答
2

快速的:

  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. 不是一个真正的问题......

于 2013-05-01T01:52:15.463 回答
1

您是否尝试过chroot来安装较新的 Debian 版本?

于 2013-05-01T04:24:13.450 回答