![如何发现并列出 Linux 中软件使用的静态库?](https://linux22.com/image/1565034/%E5%A6%82%E4%BD%95%E5%8F%91%E7%8E%B0%E5%B9%B6%E5%88%97%E5%87%BA%20Linux%20%E4%B8%AD%E8%BD%AF%E4%BB%B6%E4%BD%BF%E7%94%A8%E7%9A%84%E9%9D%99%E6%80%81%E5%BA%93%EF%BC%9F.png)
背景:我们有一个适用于 Linux 发行版的第三方供应商软件,目前正在对其进行测试lubuntu
。我们有安装文件和一个install.sh
shell 脚本,用于在正确的目录中安装软件所需的二进制文件。
我们想确定该软件内部使用哪些静态库(这样我们就可以判断它们是否已经过时并在我们的环境中引入漏洞)。
我们迄今所做的:我们查看了,ldd
但它只列出了共享或动态库。 也一样objdump
。我们过去常常strings
查看隐藏在某些二进制文件中的字符串,以查看库版本号等的迹象。但对于大型二进制文件来说,这是一个非常耗时且效率低下的过程。
问题:在Linux环境下,如何发现并列出软件中使用的静态库?
答案1
我们如何发现并列出 Linux 程序中使用的静态库?
ldd <exe filename>
显示动态链接库
nm <exe filename>
显示文件中的符号。要查看哪些符号来自静态库,需要
nm
针对这些库运行以获取其中的符号(函数等)列表,然后将它们与来自的符号列表进行比较nm <exe filename>
。您可以使用
comm
命令来比较列表。请参阅man comm
以了解详细信息。这是从这个论坛上获取的这里。
来源获取可执行文件中使用的静态库列表,回答者博士