現在私はlibtoolを使って次のようなステートメントで共有ライブラリ "libmylib.so"を作成しています:
libtool --mode=compile g++ -Wall -fPIC -shared $(CFLAGS) $(LFLAGS) $(LSTATIC)
libtool --mode=link g++ -shared -export-symbols-regex beam_ -rpath /usr/lib -lotherlib
これで作成されるライブラリは、他の(静的でない)ライブラリ "libotherlib.so"に依存します。なぜなら、 "-lotherlib"という文を使用する理由です。
今私がリンクする実行可能ファイルをビルドするとlibmylib.so何か不思議なことが起きました。私はlibotherlib.soと再度リンクする必要があります。つまり、この実行可能ファイルにも文「-lotherlib」を追加する必要があります。
だから、以前のlibherlibのリンクのようです。libmylib.soをビルドするときに永続化されません。しかし、私はこれをどのように変更できますか?どのようにlibmylib.soをビルドして、共有ライブラリlibotherlib.soへの依存性を暗黙に知ることができますか?
ありがとう!
回答:
回答№1は0答えはこの質問のように同じように見えます: ビルド中に静的ライブラリを共有ライブラリにリンクしますか?
大きな違い:共有オブジェクトが静的オブジェクトの代わりにリンクに指定されている場合、それらは含まれていませんが、生成された共有ライブラリはこれらのオブジェクトに依存することを覚えています。