このSO(共有オブジェクト)が.3gfで終わるのはなぜですか?

このSO(共有オブジェクト)が.3gfで終わるのはなぜですか?

ubuntu trusty tahrは、libblas3リポジトリからインストールするときに異なる動作をします/usr/lib/libblas.so.3gf。焦点を当てると、動作が異なり、/usr/lib/x86_64-linux-gnu/libblas.so.3.dllにインストールされます。この回答。しかし、.3gfこの古いファイル拡張子に関する情報が見つかりません。libblas.so.3と隣にありますlibblas.so。何を示しますか.3gf

ベストアンサー1

通常、共有ライブラリには1つのファイルと2つのシンボリックリンクが付属しています。

  • ファイルlibfoo.so.1.2.3(後の数字.so)の名前は、ソフトウェアプロジェクトとして機能するライブラリのバージョンにちなんで指定されます。直接使用されるのではなく、2つのシンボリックリンクのうちの1つを介してのみ使用されます。
  • シンボリックリンクlibfoo.so.V(後の数字.so)は、「soversion」(共有オブジェクトバージョン)にちなんで命名されました。ライブラリで互換性のない変更が発生するたびにバージョンが変更されます。ABI。プログラムは特定のバージョンのライブラリに関連付けられています。異なるバージョンのライブラリ用に作成されたプログラムがある場合は、異なるバージョンのライブラリを異なるバージョンでインストールできます。
  • 記号libfoo.so(後に数字なし.so)は、インストールした開発ファイル(ヘッダー、静的ライブラリ)のバージョンです。プログラムをコンパイルすると、指すバージョンに関係なくリンクされますlibfoo.so(好ましくはヘッダファイルと互換性があります)。

ファイル名の変換は通常、互換性のない変更が発生するたびに増加する整数ですが、必ずしもそうではありません。

その間、DebianはBLASライブラリの2つのAPI非互換バージョンを維持しました。libblas31つはアップストリームプロジェクトのAPIを持ち、libblas3gfもう1つは「Cインターフェイスへのいくつかのマイナーな変更」。アップストリームAPIに関連付けられているプログラム用にインストールさlibblas3れたパッケージとDebian APIに関連付けられているプログラム用にインストールされたパッケージ。libblas.so.3libblas3gflibblas.so.3gf

2011年に、Debianはこのライブラリの別々のバージョンの保持を中止しました。 (私が理解しているように、Debianの変更や同様のものがアップストリームにマージされているので、3gfバージョンの将来のバージョンには3gflibblas3バージョンのすべての機能が含まれます)。.soされたバージョンの実行に使用できます。プログラム。以前のバージョンとの互換性エイリアスを削除するには数年かかりました。 Ubuntu 18.04にはまだ含まれていますが、Ubuntu 20.04には含まれていません。

おすすめ記事