查找二进制到C/ c++链接

Finding Binary to C/C++ link

本文关键字:c++ 链接 二进制 查找      更新时间:2023-10-16

我们的构建过程很复杂。我们构建了大量的二进制文件。我想获得有关二进制(exe, dll等)到源代码(C, c++)文件链接的信息。我想知道哪些C, c++文件或lib文件是二进制构建的。这是对我们的代码库进行单独的分析。我们的是一个make build文件系统,用于构建二进制文件。我想知道是否存在一种技术或工具来提取这些信息。我在网站上搜索到了scan-build,它在构建文件之前运行静态分析工具。

任何帮助将不胜感激。谢谢GreyCells

对于与特定二进制文件关联的lib文件,可以使用ldd命令,假设您使用的是linux系统。

对于c/c++文件,您可以尝试在linux中使用strings命令和grep命令的组合,例如strings binary | grep ".c"
这个命令给了我用于创建二进制文件的cpp文件列表。我希望这就是你要找的。
同样的命令可以用于库(so file)来查找与它相关的C/c++。

您可以使用非标准但广泛支持的#ident指令来添加标识字符串。这通常用于向二进制文件中添加版本信息或版权字符串,但您也可以使用它来记录哪些源文件进入了二进制文件。在每个源文件中,放置以下行:

#ident __FILE__

使每个源文件的文件名出现在二进制文件中。在ELF目标上,#ident的参数放在.comment节中,这在其他目标上可能有所不同,但通常信息以二进制结束。