【发布时间】:2010-09-07 08:26:43
【问题描述】:
如何使用 Cygwin shell 执行a.exe?
我在 Windows 上的 Eclipse 中创建了一个 C 文件,然后使用 Cygwin 导航到该目录。我在 C 源文件上调用了 gcc,并生成了 a.exe。我想运行a.exe。
【问题讨论】:
如何使用 Cygwin shell 执行a.exe?
我在 Windows 上的 Eclipse 中创建了一个 C 文件,然后使用 Cygwin 导航到该目录。我在 C 源文件上调用了 gcc,并生成了 a.exe。我想运行a.exe。
【问题讨论】:
./a.exe 在提示符下
【讨论】:
./a 也可以; Cygwin 足够聪明,可以将a.exe 视为a(为了与Unix 兼容,它不使用默认的.exe 后缀作为可执行文件)。
您应该可以通过输入文件名来调用它。您可能必须调用 ./a.exe,因为出于安全原因,当前目录通常不在路径上。
【讨论】:
只需在 shell 中输入 ./a
【讨论】:
随便叫
> a
确保它会被找到(路径)。
【讨论】:
. 放入您的$PATH 是个坏主意。如果要在当前目录中执行命令,请输入./a。
要在当前目录执行文件,使用的语法是:./foo
正如allain所说,./a.exe是使用Cygwin在工作目录中执行a.exe的正确方法。
注意:您可能希望使用-o 参数到cc 来指定您自己的输出文件名。例如:cc helloworld.c -o helloworld.exe。
【讨论】:
托马斯写道:
显然,gcc 的行为不像 C 编程语言中描述的那样
一般都是这样。为了让您的程序在 Windows 上运行,它需要以 .exe 结尾,“C 编程语言”并不是为 Windows 程序员编写的。如您所见,cygwin 模拟了 POSIX 环境的许多(但不是全部)功能。
【讨论】:
显然,gcc 的行为不像 C 编程语言中描述的那样,它说命令 cc helloworld.c 会生成一个名为 a.out 的文件,可以通过在提示符下键入 a.out 来运行该文件。
很长一段时间以来,Unix 在默认情况下并没有以这种方式表现(所以你可以只写可执行文件名而不用 ./ 在前面)。它被称为 a.exe,否则 Windows 不会执行它,因为它会从扩展名中获取文件类型。
【讨论】:
cygwin 下的 gcc 不会生成类型为“ELF 32-bit LSB executable”的 Linux 可执行输出文件,但它会生成类型为“PE32 executable for MS Windows”的 windows 可执行文件,它依赖于 cygwin1.dll,所以它需要在 cygwin shell 下运行。如果你需要在 dos 提示下独立运行它,它们 cygwin1.dll 需要在你的 Windows PATH 中。
-AD。
【讨论】:
当您在 Cygwin 中启动时,您位于“/home/Administrator”区域,因此请将您的 a.exe 文件放在那里。
然后在提示符下运行:
cd a.exe
Cygwin 会读入它并要求您安装它。
【讨论】:
cd 更改到指定目录。如果您刚刚通过调用编译器创建了一个.exe 文件,则不会要求您安装任何东西。 (通常你不会在/home/Administrator;你会在你的用户名的主目录中。)