我有我自己的可执行文件,我链接到特定版本的Xerces。 它还使用了一堆其他库,其中一些不是我自己的。 当我在该可执行文件上运行ldd时,发现它需要我期望需要的Xerces版本以及另一个版本。 我假设其他版本来自我链接到其他库。
这里是一个问题:如何找出哪个第三方库需要旧的Xerces?
环境是Linux和Solaris(我的可执行文件是为这两者编译的)。
ldd / path / to / file
适用于可执行文件和共享库。
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
这到底是为我工作的。 谢谢你把我踢出去 – 我被“愚蠢”了。
没有关于如何链接这个可执行文件的更多信息(你有没有源代码?),这个问题不是很容易理解。 我会build议在你的可执行文件链接到的每个库上运行ldd。