Ubuntu 20.04にg ++ 12をインストールする方法は?

Ubuntu 20.04にg ++ 12をインストールする方法は?

私はg ++ 12を必要とするいくつかのコードを扱っていますが、Ubuntu 20.4.4でこのコンパイラを取得する方法を知りたいです。

ソースからインストールする必要がある場合はどうすればよいですか?

私はhomebrewといくつかの他のインストーラを使っていくつか試しましたが、これまで何も動作しませんでした。

ベストアンサー1

最新のLTS(長期サポート)バージョンのUbuntuでアップデートを検討している場合は、今が良い時期かもしれません。 Ubuntu 22.04LTSをapt install g++-12使用すると、GCC 12でg ++をインストールできます。古い依存関係に依存するソフトウェアがあまりない場合は、Ubuntuを更新するのがおそらく最も簡単な方法ですg++12。 (podmanまたはコンテナで簡単に試すことができますdocker。ここでは詳しく説明しません。)

Ubuntu 20.04に閉じ込められている場合は、最もクリーンで簡単な方法はg++1222.04パッケージをバックポートすることですg++12。この場合、GCCを構築する方法と、既存のコンパイラやABIを妨げ、システム全体を損なわない競合するg ++をインストールする方法を学ぶことを心配する必要はありません。 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パッケージは少なくとも2.37以上が必要であることを示しg++11ますbinutils

それは本当に重要です。個人的に言えば「最先端のC ++コンパイラが必要なソフトウェアをいくつか構築している場合は、とにかく私のUbuntu 20.04環境に合わないので、より現代的なUbuntuにアップデートする必要があります。」。だからまたUbuntu 22.04の私の提案は次のとおりです。、その後apt install g++-12

問題を参考にしたい場合は、修正を開始してgcc-12-12.*/debian/control依存するだけrules.confです。rules2一部 g++代わりに、g++11ADAサポートを無効にして要件を下げるbinutilsなどの作業を実行してください。

しかし、Debian の人々は、どのバージョンの依存関係を使用するのか、どのような修正とバックポートを含めるのかについて考えたでしょう。岩の長さです。これは「基本的な」ソースビルドよりも簡単かもしれませんが、予想よりもGCCについてもっと学ぶ簡単な方法であり、ビルドを開始するのに数時間しかかかりません。

率直に繰り返し続けますが、突然最新のコンパイラが必要だと思われる場合は、今が最新の環境にアップデートするのに良い時期です。その結果、痛みは減り、利益はより多くなりました。

おすすめ記事