我可以在 Cygwin 中运行哪些类型的程序?

我可以在 Cygwin 中运行哪些类型的程序?
  1. 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
    
  2. Cygwin 是否提供这些常见 Linux 实用程序的实现作为具有相同基本名称但添加了.exe扩展名的 Windows 可执行文件?

  3. Cygwin 可以运行任何本机 Windows 可执行文件吗?或者其中大多数?

谢谢。

答案1

https://www.cygwin.com/

Cygwin 是:

  • 大量 GNU 和开源工具,提供与 Windows 上的 Linux 发行版类似的功能。

  • 一个 DLL(cygwin1.dll),它提供了大量 POSIX API 功能。

Cygwin 不是:

  • 在 Windows 上运行原生 Linux 应用的方法。如果希望应用程序在 Windows 上运行,则必须从源代码重建应用程序。

  • 一种让本机 Windows 应用程序神奇地了解 UNIX® 功能(如信号、ptys 等)的方法。同样,如果您想利用 Cygwin功能,则需要从源代码构建应用程序

关于你的问题:

  1. 您无法在 Windows 上运行 ELF。您需要一个装有 Linux 的虚拟机才能运行 ELF。
  2. cygwin 提供 Unix 实用程序,但有些可能与 Windows 实用程序同名。为实现兼容性,保留了 Exe 扩展名。
  3. 是的。Cygwin 程序也是 Windows 程序
  4. 是的。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。在某些情况下,可能更多地设计为使用单引号而不是双引号。

相关内容