cygwin 二进制 exec 格式错误

cygwin binary exec format error

我有一个使用 Cygwin 在 windows 中提供给 运行 的脚本文件。当我尝试使用此文件时,出现以下错误

-bash: /sigdet/filename: cannot execute binary file: Exec format error.

sigdet 是我拥有脚本的 Cygwin 目录中的文件夹。 Rawdata 是包含脚本应该分析的原始数据文件的目录的名称。

为了尝试解决这个问题,我更改了文件权限,我已经检查以确保它在 64 位机器上并且脚本似乎是在 64 位机器上编译的。完成这些步骤后,我不知道还有什么问题。以下是我输入的命令:

我先这样改了目录:

$ cd /sigdet/

然后我 运行 支持工作的脚本:

$ /sigdet/filename -i rawdata

脚本文件是否需要在 windows 中有扩展名?我试过将它更改为 .sh 扩展名,但没有成功。我听说它在其他 windows 机器上也能正常工作。

感谢任何可以提供帮助的人。

  1. 您的文件不是可执行文件。 它很可能包含专为 Linux 操作系统设计的 ELF 可执行文件,或者它已损坏。
  2. 如果您的文件是 shell 脚本,或者实际上是任何包含纯文本的文件,您会收到不同的错误(例如 "expected command name" 或 "unknown command: XYZ" 等)
  3. 脚本不应像任何可执行文件一样具有文件扩展名。另一方面,它们应该有 shebangs:位于第一行的小文本告诉系统解释器的路径。例如,一个 Python 可执行脚本可能被命名为 whatever 并且在第一行有 #!/usr/bin/python3 或类似的。当您 运行 通过 shell 中的 ./whatever 时,它会在 /usr/bin 和 运行 中查找 python3 文件,如下所示:/usr/bin/python3 ./whatever。 (事实上​​,由于这一点,您还可以指定传递给解释器的其他参数。)

也有可能您的脚本是有效的,但它包含指向错误解释器的 shebang。如果是这种情况,那么路径很可能是正确的,否则你会得到 /whatever/interpreter: bad interpreter: no such file or directory 错误或类似的错误。但是,所有其他要点都适用于解释器(这只是另一个可执行文件...)

如果脚本 and/or 解释器至少要在 Windows 或 Cygwin 上执行,它应该包含前面提到的 shebang(#!/path 在名字中)或者它应该是 Windows 可执行文件(在这种情况下,文件数据应以 MZ 字母开头,您可以在记事本中检查它。)如果不是,则意味着给您的文件不能 运行 在 Cygwin 上。

遇到了同样的问题。在 makefile 的顶部添加了以下内容:

导出 ARCH = CYGNUS

在 make 过程中发生的事情是创建了 Linux 和 Windows 版本的可执行文件。您只需要使用 ./.exe 版本即可。

就我而言,当我使用错误的命令编译我的 C 程序时出现错误。当我使用正确的命令时:

gcc myprog.c -o myprog.exe

错误已解决。