cygwin二进制可执行格式错误

我有一个脚本文件,我被授予使用Cygwin在Windows中运行。 当我尝试使用此文件时,出现以下错误

bash:/ sigdet / filename:不能执行二进制文件:执行格式错误。

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

为了尝试解决这个问题,我已经更改了文件权限,我已经检查过它是否在64位机器上,而且脚本看起来是在64位机器上编译的。 经过这些步骤,我不知道还有什么问题。 这里是我input的命令:

我第一次改变了这样的目录:

$ cd / sigdet /

然后我运行了这个工作的脚本:

$ / sigdet / filename -i rawdata

脚本文件是否需要在Windows中有扩展名? 我试过把它改成.sh扩展名,但没有运气。 我被告知,它只是在其他Windows机器上工作,它是如何。

感谢任何人可以帮助这个。

  1. 您的文件不是可执行文件。 它最有可能包含为Linux操作系统设计的ELF可执行文件,或者它已经损坏。
  2. 如果你的文件是一个shell脚本,或者实际上任何包含纯文本的东西,你会得到不同的错误(比如“expected command name”或者“unknown command:XYZ”等)
  3. 脚本不应该像任何可执行文件一样具有文件扩展名。 另一方面,他们应该有一些文字:位于第一行的小文本,告诉系统通往翻译的路径。 例如,一个Python可执行文件可能被命名为whatever并且在第一行中有#!/usr/bin/python3或类似文件。 当你运行它时,它会在/usr/bin查找python3 ,然后像这样运行你的文件: /usr/bin/python3 ./whatever 。 (事实上​​,由于这个,你也可以指定传递给解释器的附加参数。)

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

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

有这个相同的问题。 在makefile的顶部添加以下内容:

导出ARCH = CYGNUS

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