Ubuntu 18.04.6 LTSを使用しており、コマンドを使用すると、dpkg -l
結果に次の項目が含まれます。
ii gcc 4:7.4.0-1ubu amd64 GNU C compiler
ii gcc-7 7.5.0-3ubunt amd64 GNU C compiler
ii gcc-7-base:amd 7.5.0-3ubunt amd64 GCC, the GNU Compiler Collection
ii gcc-8-base:amd 8.4.0-1ubunt amd64 GCC, the GNU Compiler Collection
gcc
現在のバージョンが何であるかを知りたいですgcc-7
。
答え1
Debian/Ubuntu には、gcc パッケージ、Python、llvm パッケージなど、複数のパッケージ名で複数のバージョンを同時にパッケージする多くのツールチェーンパッケージがあります。
これには、次のようないくつかの理由があります。
- 新しいバージョンがビルドに失敗した場合は、パッケージビルドを一時的に以前のバージョンに戻すことができる「エスケープハッチング」を提供します。この種の機能は、自分でビルドする必要があるコンパイラに特に便利です。
- これにより、アーリーアダプターパッケージがディストリビューション全体のデフォルト値を切り替える前に、新しいバージョンをテストおよび/または使用できます。
- これにより、さまざまな言語のフロントエンドおよび/またはさまざまなアーキテクチャが異なる時間にバージョンを切り替えることができます。
名前には、バージョン番号なしでパッケージをビルドする「デフォルト」ソースパッケージ(gccの場合はgcc-defaults)があります。ディストリビューションでは、これらのパッケージを使用してツールのデフォルトバージョンを設定します。
したがって、gcc-7パッケージにはgccバージョン7.xが含まれています。 gccパッケージは、その特定のバージョンの「デフォルト」バージョンであるgccのメジャーバージョンに依存し、そのバージョンへのシンボリックリンクを含みます。
gcc-<version>-baseには、gccソースパッケージで構築されたすべてのパッケージで共有されるいくつかのファイルが含まれています。特にこれには libstdc++6 が含まれます。
libstdc++6 は「デフォルト」システムを使用せず、ディストリビューションの最新の gcc-x ソースパッケージで提供されます。このバージョンのgccはまだデフォルトバージョンではありません。
18.04にはデフォルトのgccバージョンとしてgcc 7がありますが、gcc-8のlibstdc ++があるので、gcc-7-baseとgcc-8-baseの両方がインストールされているようです。
残念ながら、18.04はpackages.ubuntu.comから削除されましたが、デフォルトのgccはバージョン7ですが、libstdc ++6はgcc-8ソースパッケージから来たことを示す関連ページのコピーが戻りシステムにあります。 。
http://web.archive.org/web/20230208173902/https://packages.ubuntu.com/bionic/gcc
http://web.archive.org/web/20220809174431/https://packages.ubuntu.com/bionic/libstdc%2B%2B6