因此,如果使用英特尔编译器对其进行编译,则从可执行文件中嵌入的符号中判断它是相对简单的,例如,来自可执行文件中__intel_proc_init等符号的存在。
有没有办法告诉用什么版本的英特尔编译器使用类似的诊断来编译二进制文件?
答案 0 :(得分:2)
所以我想我找到了对自己问题的部分答案。使用strings实用程序,我能够从Fortran可执行文件中提取以下字符串:
@(#)英特尔Fortran RTL消息目录V10.1-101 01-Aug-2007
从另一个Fortran可执行文件中,我找到了以下字符串:
/opt/intel/Compiler/11.1/073/bin/intel64/ifort
@(#)英特尔Fortran RTL消息目录V11.1-107 2010年3月16日
但是,我无法从C编译的可执行文件中提取任何此类字符串。
答案 1 :(得分:1)
PEID能够为MSVC二进制文件执行此操作,因此您可能需要检查它并查看它是否适用于英特尔,如果是这样,那么您需要从制造商那里了解他们在PE中扫描的内容obj dump(iirc的一些信息是PE中的纯文本)
答案 2 :(得分:0)
以下Fortran源代码将在运行时输出Intel编译器版本。显然,其他语言中的代码相似......是否符合您的需求?如果没有,它可能会给可执行文件中的符号提供线索。
#ifdef __INTEL_COMPILER
write (*, 1050) __INTEL_COMPILER
1050 format ( "Fortran code compiled with Intel ifort, version ", I0 / )
#endif