私は共有ライブラリのバージョンがLinux上でどのように管理されているのか、プログラムを構成しコンパイルするときにこれらのファイルが異なるバージョンのインクルードファイルとどのようにやりとりされるのかを理解しようとしています。Linuxには複数のバージョンの共有ライブラリがありますが、どのようなものが含まれていますか?
私は、ファイル名にlibxxx.soの最初のバージョン番号が異なる複数のバージョンの共有ライブラリ(.soファイル)をシステムに持たせることができます。異なるプログラムが同じライブラリの異なるバージョンにリンクされている可能性があります。ライブラリの新しいバージョン(.so。#が変更されました)は、通常、以前のバージョンと互換性がありません。 (最初の後のバージョン番号は、互換性に影響を与えないマイナーライブラリの変更です)。
古いバージョンのライブラリにリンクされている古いプログラムをコンパイルしている(または再コンパイルしている)場合、私のシステムに古いライブラリと新しいライブラリの両方がある場合は、複数の各ライブラリのバージョンに関連付けられているインクルードファイルのバージョン。したがって、古いバージョンのライブラリを利用できるにもかかわらず、古いバージョンのインクルードファイルがリンクされていなくても、実際にはそのプログラムを再コンパイルできません。本当?
もしそうなら、複数のライブラリバージョンのサポートが疑わしいと思われます。古いバージョンのライブラリの唯一のユーザーは、古いバージョンが最新のときにコンパイルされたプログラムであり、リンクするすべてのライブラリのすべてのバージョンが最新バージョンでない限り、プログラムを再コンパイルしないでください。システムにインストールされているライブラリライブラリの新しいバージョンがインストールされるとすぐに、古いバージョンを使用しているすべてのプログラムはコンパイルできなくなります(新しいライブラリを使用して新しいバージョンに更新されていない限り)。右?
また、インストールされている各ライブラリのバージョンごとに別々のインクルードファイルのサブディレクトリを保存するという問題が発生するため、適切なインクルードファイルとライブラリバージョンを使用してプログラムを再コンパイルできますか?
はい、ありがとうございます。ライブラリのバージョンは、以前にリリースされ使用されていたときに便利です。したがって、常に各バージョンのインクルードファイルを別々のディレクトリにパッケージ化するのが標準的な方法です。最初のバージョン番号と後続のバージョン番号との区別は、多くの意味を持ちます。最初のものはインタフェースの変更を示し、他のものはインタフェースに影響しない小さな変更を示します。ライブラリパッケージには最初のバージョン番号ごとにインクルードサブディレクトリが必要ですが、私はこれを自分で見たことがありません。 – tedtoal