自动将 GCC 更新到更高版本,无需升级发行版

qua*_*ant 6 debian gcc apt

我的理解是 G++ 4.7.2 中的 C++11 支持不是很好(每次我尝试编译我的 C++ 代码时它都会给我一个警告,大概这些警告有很好的理由),所以我想我会尝试更新到更新的东西。

我没有很多下载配额,所以我真的想限制我下载的数量,所以我绝对不想升级 Debian stable (Wheezy) 或升级,build-essentials除非我真的需要。

是否有一个简单的命令可以用于apt-get最新的 GCC 版本(或任何具有完整 C++11 支持的),而无需对我的 aptitude 存储库做任何棘手的事情?

如果答案以我可以运行的命令的形式出现,它将覆盖任何现有的安装,我更喜欢它,因为我仍然在整个 Linux 安装过程中苦苦挣扎。

小智 5

包管理为您提供了一组“属于一起”的包。试图欺骗它安装一组不属于您的发行版的新软件可能“效果不佳”。通常发生的情况是,您会得到一个巨大的后续软件包菊花链,您还需要升级这些软件包(例如“gcc 需要一个新的 glibc,新的 glibc 需要新的 binutils,新的 binutils 破坏了您的 gdb,因此您需要更新它“, 等等)。

我发现将现有安装的工具保留在它们所在的位置是一个更好的解决方案,然后构建我自己的 gcc、llvm+clang、gdb、lldb 或任何我觉得我需要更高版本的版本。通常,这没有问题,因为它安装在 /usr/local/{bin,lib,include,...} 中,发行版工具安装在 /usr/{bin,lib,include,...} 中 - 所以如果您需要使用较旧的(有时情况确实如此,例如您有一个较新的 gcc,但不幸的是它无法编译项目 A - 甚至它本身) - 您使用 /usr/bin/ gcc 或编辑您的 $PATH 以不使用 /usr/local。

我安装了 Fedora-16,但我使用 gcc 4.8.2(截至 3 月底的最新版本)和 clang 3.5 - 系统自带的默认编译器是 gcc 4.6.3 和 clang 2.9。Clang 3.5 需要兼容 C++11 的编译器,因此该项目需要 4.7 或 4.8。它工作得很好。(但新的 gcc 和 clang 破坏了旧的 gdb,使得符号无法按预期工作,所以我需要重建 gdb 或升级它)。