私は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++12
22.04パッケージをバックポートすることですg++12
。この場合、GCCを構築する方法と、既存のコンパイラやABIを妨げ、システム全体を損なわない競合するg ++をインストールする方法を学ぶことを心配する必要はありません。 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パッケージは少なくとも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++11
ADAサポートを無効にして要件を下げるbinutils
などの作業を実行してください。
しかし、Debian の人々は、どのバージョンの依存関係を使用するのか、どのような修正とバックポートを含めるのかについて考えたでしょう。岩の長さです。これは「基本的な」ソースビルドよりも簡単かもしれませんが、予想よりもGCCについてもっと学ぶ簡単な方法であり、ビルドを開始するのに数時間しかかかりません。
率直に繰り返し続けますが、突然最新のコンパイラが必要だと思われる場合は、今が最新の環境にアップデートするのに良い時期です。その結果、痛みは減り、利益はより多くなりました。