cygwin二进制exec格式错误

时间:2015-07-02 18:27:28

标签: linux windows bash cygwin

我有一个脚本文件,我使用Cygwin在Windows中运行。当我尝试使用此文件时,我收到以下错误

  

-bash:/ sigdet / filename:无法执行二进制文件:exec格式错误。

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

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

我首先更改了目录:

  

$ cd / sigdet /

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

  

$ / sigdet / filename -i rawdata

脚本文件是否需要在Windows中有扩展名?我已经尝试将其更改为.sh扩展名,没有运气。我被告知它只适用于其他Windows机器。

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

3 个答案:

答案 0 :(得分:2)

  1. 您的文件不是可执行文件。 它很可能包含专为Linux操作系统设计的ELF可执行文件,或者它已损坏。
  2. 如果您的文件是shell脚本,或者事实上任何包含纯文本的文件,您将得到不同的错误(例如,"预期的命令名称"或"未知命令: XYZ"等。)
  3. 脚本不应该像任何可执行文件一样具有文件扩展名。另一方面,他们应该有shebangs:位于第一行的小文本告诉系统解释器的路径。例如,Python可执行脚本可能在第一行中被命名为whatever并且具有#!/usr/bin/python3或类似内容。当您通过shell中的./whatever运行它时,它会在python3中查找/usr/bin并运行您的文件:/usr/bin/python3 ./whatever。 (事实上​​,由于这个原因,您还可以指定传递给解释器的其他参数。)
  4. 您的脚本也有可能有效,但它包含一个指向错误解释器的shebang。如果是这种情况,那么很可能路径是正确的,否则您会得到/whatever/interpreter: bad interpreter: no such file or directory错误或类似错误。但是,所有其他要点都适用于解释器(这只是另一个可执行文件......)

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

答案 1 :(得分:1)

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

导出ARCH = CYGNUS

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

答案 2 :(得分:1)

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

gcc myprog.c -o myprog.exe

错误已解决。