私は動的ライブラリlibexample.soを使ってプログラムを作成します。動的ライブラリは別の動的ライブラリlibtool.soに依存します。別のダイナミックライブラリに応じてダイナミックライブラリをリンクするにはどうすればよいですか?
gccからのメッセージのためにlibexample.soをリンクするのにリンカに見えました。
Building target: libexample.so
Invoking: GCC C++ Linker
g++ -L/home/takehiro/Documents/documents/code/lib/tool -shared -o "libexample.so" ./classes/example.o ./classes/example_template.o ./classes/example_test.o ./classes/impl.o -ltool
Finished building target: libexample.so
cp libexample.so /home/takehiro/Documents/documents/code/lib/example
ただし、libtool.soとのリンクに失敗しました。
ldd /home/takehiro/Documents/documents/code/lib/example/libexample.so
...
libtool.so => not found
...
は私が
ls /home/takehiro/Documents/documents/code/lib/tool
libtool.so
これがあることで、リンカ上記で-L optoinによって指される/ホーム/武宏/ドキュメント/文書/コード/ libに/ツールの下libtool.soの存在を確認しました別の動的ライブラリに応じてダイナミックライブラリを使用するのは初めてです。だから私はとても混乱している。それは正常か機能不全ですか?なぜそれらをリンクできないのですか? 誰かに私に提案や解決策がありますか?私はとても嬉しいです。 ありがとうございます。
ありがとうSam Varshavchikに感謝します。私は以下のことを確認させてください。実行ファイルの場合、LD_LIBRARY_PATHを使用してライブラリの場所を知ることができます。ただし、別の共有ライブラリに依存する共有ライブラリの場合、LD_LIBRARY_PATHは使用されません。そうですか? – mora
ですが、 '-rpath'を使用すると、LD_LIBRARY_PATHを明示的に使用できなくなります。 –
Sam Varshavchik、もう一度ありがとうございます。私は日食を通してLD_LIBRARY_PATHを使用しました。一時的なLD_LIBRAY_PATHです。これは、実行プログラムが共有ライブラリ内の関数の参照を見つけることができなかった理由かもしれません。とにかく-rpathを使います。どうもありがとうございました。 – mora