Начните с использования команды file
, чтобы увидеть тип бинарного файла:
file ./file
Если это не исполняемый файл, это проблема. Если это исполняемый файл ELF, то он, вероятно, предназначен для работы в Linux, а не в Windows. Например, сравните вывод с этой командой:
file /bin/bash
, который должен сказать вам:
/ bin / bash: исполняемый файл PE32 (консоль) Intel 80386 (с разделением на внешнюю PDB), для MS Windows
Теперь попробуйте эту команду:
file /cygdrive/c/windows/write.exe
Который говорит следующее:
/cygdrive/c/windows/write.exe: PE32 + исполняемый файл (GUI) x86-64, для MS Windows
Я запустил это на 64-битной установке Windows 7, поэтому написано x86-64. Несмотря на то, что это приложение с графическим интерфейсом Windows, совершенно не связанное с Cygwin, я все равно могу запустить его командой:
/cygdrive/c/windows/write
Вы действительно не объяснили, как вы получили этот двоичный файл с именем ./file
. Возможно ли, что это объектный файл от компиляции, который вы еще не связали с исполняемым файлом? Если у вас есть Makefile, почему бы не опубликовать его содержимое?