GNU/Linux >> Linux の 問題 >  >> Linux

Linux で .so.1 ファイルが必要なのはなぜですか?

libtest について話しているとしましょう .あたりを見回すと libtest.so が見えます libtest.so.1 へのリンクです。 、次に libtest.so.1.5 にリンクします .

libtest を使用した実行可能ファイル libtest.so に対してリンクします これは libtest.so.1 です この場合 (これは実行可能ファイルに書き込まれます。ldd(1) を参照してください) )。ディストリビューションが libtest に変更された場合 バグを修正するために、新しいバージョンは libtest.so.1.6 を与えるかもしれません (そして更新後 libtest.so.1 リンクしても、実行中のプログラムは引き続き libtest.so.1.5 を使用します 彼らが出るまで)。 ABI を変更しない限り、すべて正常に動作します。そして、API の変更がないという事実は、変更されていない 1 バージョン番号によって示されます。

忙しい libtest としましょう ビーバーは、ABI が変更された、ゼロから書き直された、すべて光沢のある新しいライブラリを考え出します。 ABI が変更されたため、メジャー バージョン番号が 2 に変更されました。これをインストールすると、チェーン libtest.so --> libtest.so.2 --> libtest.so.2.1 が作成されます。 .バージョン 1 と 2 の両方がインストールされていることに注意してください。 libtest.so.1 を使用すると、以前のプログラムは引き続き正常に動作します 、しかし、新しいプログラムをコンパイルすると、コンパイラ (リンカー、実際には) は libtest.so を取得します したがって、実行可能ファイルを新しい libtest.so.2.1 に向けます (特に古いバージョンを使用するように求められた場合を除きます)。

so のバージョン番号は、ソース コードのバージョン番号と関係がある必要はないことに注意してください。メジャー番号は ABI バージョンです。マイナー番号はオプションで、リビジョンの追跡に使用できます。ここ(Fedora 20)では systemd-libs-208-15.fc20.x86_64 を使用しています libsystemd-daemon.so.0.0.10 を提供します .


これらは同じライブラリの異なるバージョンです。

通常、ライブラリの最新の安定したバージョンが必要なため、その最新バージョンにリンクされている x.so にリンクします。 x.so.2 などの新しいバージョンが利用可能になったら、x.so を x.so.2 にリンクすることで、システム全体でそれを使用することができます

場合によっては、古いバージョンにリンクしたいことがあります。たとえば、プログラムが修正済みの癖に依存している場合や、最新バージョンにバグが導入されている場合などです。新しい試験的なバージョンにリンクしたい場合があります。たとえば、テストしている場合や、現在のバージョンのバグを修正している場合などです。その場合は、番号付きのバージョンに直接リンクしてください - 願わくば一時的な措置として。


Linux
  1. 制御が必要なためにLinuxに切り替えた理由

  2. Linux –すべてがファイルですか?

  3. Linux 用の優れた 16 進エディタが必要

  1. Linuxでlsの代わりにexaを使用する理由

  2. Linux で select が使用される理由

  3. 組み込みデバイスにブートローダーが必要なのはなぜですか?

  1. Linuxでファイルを移動する方法

  2. Linuxファイルのアクセス許可について

  3. Linuxテールコマンド