我正在处理一些需要 g++12 的代码我想知道如何在 Ubuntu 20.4.4 上获得这个编译器
如果我需要从源代码安装它我该怎么做?
我已经尝试过使用自制程序和其他一些安装程序进行一些操作,但到目前为止没有任何效果。
答案1
如果您正在考虑更新到 Ubuntu 的最新长期支持 (LTS) 版本,现在可能是个好时机:Ubuntu 22.04LTS 允许您使用 , apt install g++-12
done 安装 GCC 12 的 g++。我预测,除非你有很多软件依赖于过时的依赖库,否则更新你的 Ubuntu 可能是最简单的方法g++12
! (您可以轻松地在podman
or容器中进行尝试docker
,我不会在这里详细介绍。)
如果您坚持使用 Ubuntu 20.04,我想最干净、最直接的获取方法g++12
是尝试向后移植 22.04g++12
软件包。在这种情况下,您不必担心学习如何构建 GCC,以及如何安装竞争性的 g++,它不会通过干扰现有编译器甚至更糟糕的 ABI 来破坏您的整个系统。 Debian(以及 Ubuntu 作为其下游)已经承担了学习这一点的工作量,您只需要使用他们的工具即可。惊人的!
粗略地说,执行此操作的过程是这样的:
准备构建 Debian/Ubuntu 软件包:
sudo apt update sudo apt install -y build-essential fakeroot dpkg-dev devscripts cmake debhelper-compat dh-python equivs
获取包源。您需要找到以下链接
.dsc
在以下位置找到该文件的链接包装页:mkdir gcc-12 cd gcc-12 dget -u https://URL/OF/DSC/FILE.dsc
从以下位置安装构建依赖项
.dsc
:mk-build-deps -i gcc-12*.dsc
构建包:
cd gcc-12-somethingsomething dpkg-buildpackage -us -uc -ui -d
到目前为止的理论。实际上,第 3 步将会失败 – GCC12 依赖于 Ubuntu 20.04 附带的版本太旧的工具。特别是,Debian 软件包表示您至少需要g++11
, binutils
>= 2.37。
这确实是重点我个人说“如果我构建的某些软件需要前沿的 C++ 编译器,无论如何它都不会满足我的 Ubuntu 20.04 环境,而且我需要更新到更现代的 Ubuntu”。那么,再一次这是我的建议;更新至 Ubuntu 22.04, 进而apt install g++-12
。
如果您想忍受麻烦,您将开始修改gcc-12-12.*/debian/control
和rules.conf
,rules2
以仅依赖于一些 g++
相反g++11
,禁用 ADA 支持、降低要求binutils
等。
但是,您可以肯定 Debian 人员考虑过要使用哪些版本的依赖项,以及要包含哪些修复和向后移植。这是一条崎岖的路。可能比“裸”源构建要简单,但这是一种比您预期更多地了解 GCC 的简单方法,并且只需花费几个小时即可开始构建。
老实说,我一直在重复自己,但是:如果您突然发现自己需要现代编译器,那么现在是更新到现代环境的好时机。这样可以减少痛苦并带来更多好处。