【发布时间】:2009-04-18 22:10:45
【问题描述】:
如何确定用于构建特定 Windows 可执行文件或 DLL 的 C 或 C++ 编译器?一些编译器会在最终的可执行文件中留下版本字符串,但这在 Windows 上似乎比在 Linux 上少。
具体来说,我有兴趣区分 Visual C++ 和各种 MinGW 编译器(通常从函数签名相当容易),然后区分 Visual C++ 版本(6、2002/2003、2005、2008;更难做到)。有没有一种工具可以以半可靠的方式进行区分?
【问题讨论】:
-
是什么驱使您需要这些信息?
-
首先,想知道我们使用了什么版本的 VS 来构建我们这里的一些二进制文件。 (我正在考虑使用更新版本的 VS 重新构建它们,以获得几乎免费的性能提升。)我找到了知道这些特定二进制文件答案的人,但我很好奇它是否可以在一般情况下完成。
-
在这种情况下,答案不就是无论如何都要使用最新的编译器进行重建吗?要么使用相同的编译器重新编译,不做任何更改,要么最终使用更新的编译器,给你提到的优势。
-
当然可以。但是 1. 你可能在浪费你的一些努力,而且(更重要的是)2. 这并不能平息我的好奇心 :)
标签: c++ c compiler-construction executable disassembly