静的および動的同じライブラリをリンクします
-
11-09-2019 - |
質問
私は静的ライブラリ(libA.2.0.a
)にリンクしても、動的に別のライブラリ(libB.so
)にリンクのプログラムを持っています。 libB.so
も動的にLIBA(libA.1.0.so
)の古いバージョンにリンクします。
この構成は可能ですか?そうであれば、どのようにシステムがlibA.2.0.a
ためlibA.1.0.so
から私のプログラムとシンボルのlibB.so
からシンボルを使用するために知っていますか?
解決
はい、この構成が可能です。
システムは、シンボルを使用する方法を知っているかのようにあなたの質問への答えでは、すべてのリンクはビルド時に起こることを覚えておいてください。それが構築されていたら、それだけで、さまざまなアドレスで様々な機能を呼び出し、「記号」の問題ではありません。
libB.soを構築する場合には、それがlibA.1.0.so.にそれのリンクを設定しますそれは知っているか、それが行います使用するものの他のアプリケーションを気にしない、それだけで、独自の関数呼び出しをマップする方法を知っています。
アプリケーション自体、libB.so.へのアプリケーションのリンクを構築する場合libB.soが呼び出すどのようなアプリケーションに対して完全に不明です。また、アプリケーションは静的にlibB.soは気にしないライブラリにリンクします。
一つの落とし穴:LIBAは静的変数を使用する場合、1つのlibB.soにアクセス可能な静力学のセット、およびアプリケーションにアクセス可能な静力学の異なる、独立したセットがあるでしょう。
所属していません StackOverflow