我有自己的可执行文件,我将其链接到特定版本的 Xerces。它还使用了很多其他库,其中一些不是我自己的。当我在该可执行文件上运行 ldd 时,我发现它需要我期望它需要的 Xerces 版本以及另一个版本。我假设另一个版本来自我链接到的另一个库。
问题是:我如何找出哪个第三方库需要旧版 Xerces?
环境是Linux和Solaris(我的可执行文件是为两者编译的)。
答案1
ldd /路径/到/文件
适用于可执行文件和共享库。
答案2
ldd <executable> | sed 's/^.*=> //' | sed 's/ (0x.*)$//' | grep mnh_tst1_main | grep -v xerces | xargs ldd 2>/dev/null | egrep "^/|xerces" | grep -B 1 xerces | less
这最终对我有用。谢谢你把我踢出去——我“被愚蠢困住了”。
答案3
如果没有关于如何链接此可执行文件的更多信息(您是否有源代码?),就很难理解这个问题。我建议对可执行文件链接到的每个库运行 ldd。