2 つの共有ライブラリ liba.so および libb.so。liba.so は libb.so を使用します。すべての c ファイルは -fPIC でコンパイルされます。リンクには -shared を使用します。liba.so で dlopen を呼び出すと、libb.so でシンボルを見つけることができません...「未定義のシンボル」エラーが発生します。エラーなしで libb.so を dlopen できます。ファイルが見つからないというエラーが発生しないため、liba が libb を見つけていることがわかります。libb.so を削除すると、ファイルが見つからないというエラーが発生します。-lutil を試しましたが、うまくいきませんでした。
何か案は????
そうそう。gcc 4.1.2
更新: liba をリンクするときに rpath を使用して、libb を見つけられるようにします。
ldd liba.so は以下を返します。
linux-gate.so.1 => (0xffffe000)
libb.so => ./libb.so (0xf6ef9000) <-------- LIBB
libutil.so.1 => /lib/libutil.so.1 (0xf6ef5000)
libdl.so.2 => /lib/libdl.so.2 (0xf6ef1000)
libm.so.6 => /lib/libm.so.6 (0xf6ec9000)
libpthread.so.0 => /lib/libpthread.so.0 (0xf6eb1000)
librt.so.1 => /lib/librt.so.1 (0xf6ea8000)
libc.so.6 => /lib/libc.so.6 (0xf6d62000)
/lib/ld-linux.so.2 (0x007d0000)
libb の末尾に .# がないことは意味がありますか???