cygwin - 无法执行二进制文件

时间:2011-08-07 05:40:22

标签: cygwin variable-assignment

我正在尝试从我的c ++代码中运行这两个.data文件。我已经提供了所有文件,并且只是为程序实现了一些函数(一切都应该能够编译运行make命令)。

我曾经运行MAC并且刚开始使用Windows(win 7),因为工作给了我一台免费的笔记本电脑。无论如何......我安装了cygwin,将gcc-c ++编译器,gdb和make包添加到我的cygwin中。但是当我运行命令./file ./data时,它会出现:

bash: ./file: cannot execute binary file

是否有某个包或我想安装的东西?请注意,./ data是保存我的两个.data文件的文件夹,file1.datafile2.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 个答案:

答案 0 :(得分:10)

首先使用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。虽然这是一个完全与cygwin无关的Windows GUI应用程序,但我仍然可以通过命令运行它:

/cygdrive/c/windows/write

您真的没有解释如何获得名为./file的二进制文件。它是否可能是编译的目标文件,您还没有链接到可执行文件?如果您有Makefile,为什么不发布其内容?