从编译文件中,我可以看到哪个编译器已用于生成文件吗?
答案 0 :(得分:8)
还有一个很好的旧'字符串'实用程序。转储所有ascii-ish查找它在二进制文件中找到的字符串。不同的编译器在它们生成的二进制文件中嵌入了不同数量的信息,但实际上很多都会包含明显的字符串。
答案 1 :(得分:5)
许多编译器/链接器在输出文件中插入一个.comment
部分来标识它们。还有一些更微妙的行为可以创建编译器指纹,但我知道没有现有的工具。
如果您有源代码,最简单的解决方案是尝试使用相关的每个编译器进行编译,直到得到一个匹配逐字节(甚至密切)的二进制文件。
答案 2 :(得分:4)
在某些情况下,您可以在二进制文件上运行ldd
并找出它链接的标准库。例如,在Solaris gcc vs Sun CC vs之间。
对于C ++代码,您还可以转储一些符号,查找损坏的函数名称,然后找出哪个demangler生成正确的原始名称。
答案 3 :(得分:2)
尝试,IDA Pro标识用于构建可执行文件的库和工具。