我有一个 libA.so。它被 JNI 方法使用。
我有两个不同版本的 Ubuntu。一个是 Ubuntu 8.04,另一个是 Ubuntu 9.10。
libA.so 有一个依赖项。 libA.so 依赖于 libB.so,而 libB.so 依赖于 libC.so。
ie. libA.so -> libB.so -> libC.so (Actually libB.so and libC.so are related with GTK)
libA.so 在 Ubuntu 8.04 中编译。 JNI 方法在 Ubuntu 9.10 中运行良好。 (很奇怪)
但它有时在 Ubuntu 8.04 中不起作用。它返回“ undefined symbol GTK_SET_BULA”错误。
所以我用
readelf -a libC.so
检查了它我可以找到这个符号。我使用
ldd libA.so
进行了检查和 ldd libB.so
.链接信息也很好。我对这个问题有任何想法。请让我知道您的出色意见。谢谢。
最佳答案
提供有关您的问题的更多信息:
解决此类问题的常见建议是在 LSB Navigator 中搜索有关遗漏符号的信息。 .
顺便提一句
使用 -Wa 选项而不是 -a 来读取 ELF 文件,以避免破坏输出行(分成 80 列):
readelf -Wa libC.so
关于ubuntu - 我的 .so 如何在不同的 Ubuntu 版本中找到其依赖的 .so?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3255095/