Cygwin 是否只运行 Windows 可执行文件?当我在 Windows 10 中运行 Cygwin 中的 ELF 程序时,它显示
$ ./wkhtmltopdf -bash: ./wkhtmltopdf: cannot execute binary file: Exec format error $ file wkhtmltopdf wkhtmltopdf: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.18, BuildID[sha1]=b6566a9e44c43a0eebf18d8c1dc6cb616801a77e, stripped
Cygwin 是否提供这些常见 Linux 实用程序的实现作为具有相同基本名称但添加了
.exe
扩展名的 Windows 可执行文件?Cygwin 可以运行任何本机 Windows 可执行文件吗?或者其中大多数?
谢谢。
答案1
Cygwin 是:
大量 GNU 和开源工具,提供与 Windows 上的 Linux 发行版类似的功能。
一个 DLL(cygwin1.dll),它提供了大量 POSIX API 功能。
Cygwin 不是:
- 在 Windows 上运行原生 Linux 应用的方法。如果希望应用程序在 Windows 上运行,则必须从源代码重建应用程序。
一种让本机 Windows 应用程序神奇地了解 UNIX® 功能(如信号、ptys 等)的方法。同样,如果您想利用 Cygwin功能,则需要从源代码构建应用程序
。
关于你的问题:
- 您无法在 Windows 上运行 ELF。您需要一个装有 Linux 的虚拟机才能运行 ELF。
- cygwin 提供 Unix 实用程序,但有些可能与 Windows 实用程序同名。为实现兼容性,保留了 Exe 扩展名。
- 是的。Cygwin 程序也是 Windows 程序
- 是的。Cygwin 程序可以启动普通的 Windows(非 cygwin)程序。
答案2
cygwin 运行从 cmd.exe 运行的程序,因此 cmd.exe 程序可以从 cygwin.exe 运行,而 cygwin.exe 程序也可以从 cmd.exe 运行
甚至可以使用 cygwin 实用程序(你几乎从来都无法从普通的 cmd.exe 中正常运行)来运行它
C:\cygwin\bin>chmod --help
Usage: chmod [OPTION]... MODE[,MODE]... FILE...
or: chmod [OPTION]... OCTAL-MODE FILE...
你甚至可以从 cygwin 启动记事本
user@comp ~
$ notepad.exe a.a
user@comp ~
$ xcopy /?
Copies files and directory trees.
XCOPY source [destination] [/A | /M] [/D[:date]] [/P] [/S [/E]] [/V] [/W]
您可以尝试 dir,尽管它运行的是 cygwin 的 dir 实现,类似于 ls。
user@comp ~
$ where dir
C:\cygwin\bin\dir.exe
user@samsung350 ~
$ dir
a adfff dfds gg2.exe r.php
那么有人可能会问,cygwin 实现和 cmd.exe 实现之间有什么区别。我遇到过两个区别 - 通常,cygwin 实用程序实现更倾向于使用 LF 而不是 CRLF。在某些情况下,可能更多地设计为使用单引号而不是双引号。