cygwin - не может выполнить двоичный файл - PullRequest
5 голосов
/ 07 августа 2011

Я пытаюсь запустить эти два файла .data из моего кода C ++ для моего назначения. Мне предоставлены все файлы, и они предназначены только для реализации нескольких функций программы (все должно быть в состоянии скомпилировать с помощью команды make).

Раньше я запускал MAC и только начал использовать windows (win 7), потому что работа дала мне бесплатный ноутбук. В любом случае ... Я установил cygwin, добавил компилятор gcc-c ++, gdb и make package для моего cygwin. Но когда я запускаю команду ./file ./data, появляется:

bash: ./file: cannot execute binary file

Есть ли определенный пакет или что-то, что я должен установить? Обратите внимание, что ./data - это папка с моими двумя файлами .data, file1.data и file2.data

.

составлено "

g++ -Wall -Werror -02 -c file.cpp
g++ -Wall -Werror -02 -c file-test.cpp
g++ -Wall -Werror -02 -o file file.o file-test.o

1 Ответ

11 голосов
/ 07 августа 2011

Начните с использования команды 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, почему бы не опубликовать его содержимое?

...