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 机器上也能正常工作。
感谢任何可以提供帮助的人。
- 您的文件不是可执行文件。 它很可能包含专为 Linux 操作系统设计的 ELF 可执行文件,或者它已损坏。
- 如果您的文件是 shell 脚本,或者实际上是任何包含纯文本的文件,您会收到不同的错误(例如 "expected command name" 或 "unknown command: XYZ" 等)
- 脚本不应像任何可执行文件一样具有文件扩展名。另一方面,它们应该有 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
错误已解决。
我有一个使用 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 机器上也能正常工作。
感谢任何可以提供帮助的人。
- 您的文件不是可执行文件。 它很可能包含专为 Linux 操作系统设计的 ELF 可执行文件,或者它已损坏。
- 如果您的文件是 shell 脚本,或者实际上是任何包含纯文本的文件,您会收到不同的错误(例如 "expected command name" 或 "unknown command: XYZ" 等)
- 脚本不应像任何可执行文件一样具有文件扩展名。另一方面,它们应该有 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
错误已解决。