Как узнать, какая версия компилятора Intel использовалась для компиляции двоичного файла? - PullRequest
3 голосов
/ 01 июля 2011

Так что относительно символов, встроенных в исполняемый файл, относительно просто определить, использовался ли компилятор Intel для его компиляции, например, от присутствия таких символов, как __intel_proc_init в исполняемом файле.

Есть ли способ узнать, какая версия компилятора Intel использовалась для компиляции двоичного файла с использованием аналогичной диагностики?

Ответы [ 3 ]

2 голосов
/ 03 июля 2011

Так что я думаю, что нашел частичный ответ на свой вопрос.Используя утилиту strings, я смог извлечь следующие строки из исполняемого файла Fortran:

@ (#) Каталог сообщений Intel Fortran RTL V10.1-101 01 августа 2007 года

из другого исполняемого файла Фортрана, я нашел следующие строки:

/ opt / intel / Compiler / 11.1 / 073 / bin / intel64 / ifort

@ (#) Каталог сообщений Intel Fortran RTL V11.1-107 16 марта 2010 года

однако я не смог извлечь ни одной такой строки из скомпилированных исполняемых файлов на Си.

1 голос
/ 02 июля 2011

PEID может сделать это для двоичных файлов MSVC, поэтому вы можете проверить его и посмотреть, работает ли он для intel, если это так, то вам нужно будет узнать у производителей, что они сканируют в PE / дамп obj (часть информации в обычном тексте в PE)

0 голосов
/ 01 июля 2011

Следующий исходный код Fortran выведет версию компилятора Intel во время выполнения.Очевидно, похожий код на других языках .... Будет ли это соответствовать вашим потребностям?Если нет, это может дать ключ к символу в исполняемом файле.

#ifdef __INTEL_COMPILER
      write  (*, 1050)  __INTEL_COMPILER
      1050 format ( "Fortran code compiled with Intel ifort, version ", I0 / )
#endif
...