たとえば、2 つのトースター ライブラリlibtoaster_a.soとlibtoaster_b.soと、関連するすべてのメジャー/マイナー/リビジョン シンボリック リンク(libtoaster_a.so.1.0.0など) など、2 つのライブラリがあります。どちらのライブラリも同じトースター インターフェイスを実装していますが、単に処理を行うだけです。違う。したがって、ライブラリを使用するアプリケーションを構築する場合、どちらを使用しても問題ありません (アプリケーションの観点からは、それらは同じです)。
アプリケーションをコンパイルして配布した後で、使用するライブラリを決定したいので、libtoaster.so.1 を指すシンボリックリンクlibtoaster.soを作成します。 1 . したがって、ユーザー/インストーラーはlibtoaster.so.1リンクを変更するだけで、使用する実装を選択できます。
ビルドでは、デフォルトで libtoaster.so.1 がlibtoaster_a.so.1にリンクされているとします。アプリケーションをコンパイルすると、たとえばmy_appのようなものがコンパイルされ、 libtoaster_a.so.1で正しく実行されます。ただし、ldd を my_app で実行すると、必要に応じてlibtoaster.so.1ではなくlibtoaster_a.so.1にリンクされていることがわかります。したがって、 libtoaster.so.1リンクを変更しても効果はありません。gcc -o my_app -ltoaster...
libtoaster_a.so.1 を作成し、名前をlibtoaster.so.1に変更し、 このライブラリに対してmy_appを作成してからlibtoaster.so.1を削除し、シンボリック リンクとして再度作成するよりも、これを修正する良い方法はありますか?