有两个共享库liba.so和libb.so。 liba.so使用了libb.so。 所有c文件都使用-fPIC编译。 链接使用-shared。 当我们在liba.so上调用dlopen时,它无法找到libb.so中的符号...我们会得到“未定义的符号”错误。 我们可以无错误地dlopen libb.so。 我们知道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 的末尾没有 .# 是有意义的吗?
ldd liba.so
的输出是什么? - el.pescado - нет войне