如何在 Ubuntu 20.04 上安装 g++12?

如何在 Ubuntu 20.04 上安装 g++12?

我正在处理一些需要 g++12 的代码我想知道如何在 Ubuntu 20.4.4 上获得这个编译器

如果我需要从源代码安装它我该怎么做?

我已经尝试过使用自制程序和其他一些安装程序进行一些操作,但到目前为止没有任何效果。

答案1

如果您正在考虑更新到 Ubuntu 的最新长期支持 (LTS) 版本,现在可能是个好时机:Ubuntu 22.04LTS 允许您使用 , apt install g++-12done 安装 GCC 12 的 g++。我预测,除非你有很多软件依赖于过时的依赖库,否则更新你的 Ubuntu 可能是最简单的方法g++12! (您可以轻松地在podmanor容器中进行尝试docker,我不会在这里详细介绍。)

如果您坚持使用 Ubuntu 20.04,我想最干净、最直接的获取方法g++12是尝试向后移植 22.04g++12软件包。在这种情况下,您不必担心学习如何构建 GCC,以及如何安装竞争性的 g++,它不会通过干扰现有编译器甚至更糟糕的 ABI 来破坏您的整个系统。 Debian(以及 Ubuntu 作为其下游)已经承担了学习这一点的工作量,您只需要使用他们的工具即可。惊人的!

粗略地说,执行此操作的过程是这样的:

  1. 准备构建 Debian/Ubuntu 软件包:

    sudo apt update
    sudo apt install -y build-essential fakeroot dpkg-dev devscripts cmake debhelper-compat dh-python equivs
    
  2. 获取包源。您需要找到以下链接.dsc在以下位置找到该文件的链接包装页

    mkdir gcc-12
    cd gcc-12
    dget -u https://URL/OF/DSC/FILE.dsc
    
  3. 从以下位置安装构建依赖项.dsc

    mk-build-deps -i gcc-12*.dsc
    
  4. 构建包:

    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/controlrules.confrules2以仅依赖于一些 g++相反g++11,禁用 ADA 支持、降低要求binutils等。

但是,您可以肯定 Debian 人员考虑过要使用哪些版本的依赖项,以及要包含哪些修复和向后移植。这是一条崎岖的路。可能比“裸”源构建要简单,但这是一种比您预期更多地了解 GCC 的简单方法,并且只需花费几个小时即可开始构建。

老实说,我一直在重复自己,但是:如果您突然发现自己需要现代编译器,那么现在是更新到现代环境的好时机。这样可以减少痛苦并带来更多好处。

相关内容