【问题标题】:How do I execute a file in Cygwin?如何在 Cygwin 中执行文件?
【发布时间】:2010-09-07 08:26:43
【问题描述】:

如何使用 Cygwin shell 执行a.exe

我在 Windows 上的 Eclipse 中创建了一个 C 文件,然后使用 Cygwin 导航到该目录。我在 C 源文件上调用了 gcc,并生成了 a.exe。我想运行a.exe

【问题讨论】:

    标签: c gcc cygwin


    【解决方案1】:

    ./a.exe 在提示符下

    【讨论】:

    • ./a 也可以; Cygwin 足够聪明,可以将a.exe 视为a(为了与Unix 兼容,它不使用默认的.exe 后缀作为可执行文件)。
    【解决方案2】:

    您应该可以通过输入文件名来调用它。您可能必须调用 ./a.exe,因为出于安全原因,当前目录通常不在路径上。

    【讨论】:

      【解决方案3】:

      只需在 shell 中输入 ./a

      【讨论】:

      • 你知道为什么会这样吗? ./a.exe 是有道理的,但如果没有扩展名,这不应该运行。有什么具体原因吗?
      • 那可能是 cygwin 搞清楚事情并变得聪明。 UNIX 程序通常没有文件扩展名,所以如果 cygwin 的目标是在 Windows 上给人一种 UNIX 的感觉,那么提供释放程序文件扩展名的选项是有意义的。
      【解决方案4】:

      随便叫

      > a
      

      确保它会被找到(路径)。

      【讨论】:

      • 将当前目录. 放入您的$PATH 是个坏主意。如果要在当前目录中执行命令,请输入./a
      【解决方案5】:

      要在当前目录执行文件,使用的语法是:./foo

      正如allain所说,./a.exe是使用Cygwin在工作目录中执行a.exe的正确方法。

      注意:您可能希望使用-o 参数到cc 来指定您自己的输出文件名。例如:cc helloworld.c -o helloworld.exe

      【讨论】:

        【解决方案6】:

        托马斯写道:

        显然,gcc 的行为不像 C 编程语言中描述的那样

        一般都是这样。为了让您的程序在 Windows 上运行,它需要以 .exe 结尾,“C 编程语言”并不是为 Windows 程序员编写的。如您所见,cygwin 模拟了 POSIX 环境的许多(但不是全部)功能。

        【讨论】:

          【解决方案7】:

          显然,gcc 的行为不像 C 编程语言中描述的那样,它说命令 cc helloworld.c 会生成一个名为 a.out 的文件,可以通过在提示符下键入 a.out 来运行该文件。

          很长一段时间以来,Unix 在默认情况下并没有以这种方式表现(所以你可以只写可执行文件名而不用 ./ 在前面)。它被称为 a.exe,否则 Windows 不会执行它,因为它会从扩展名中获取文件类型。

          【讨论】:

            【解决方案8】:

            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 的计算机上运行我的程序,如何消除这种依赖关系
            • 您可以尝试使用 -mno-cygwin 来删除它,但是您会丢失它提供的所有 UNIX API; -mno-cygwin 通常与 MinGW (www.mingw.org) 一起使用。
            【解决方案9】:

            当您在 Cygwin 中启动时,您位于“/home/Administrator”区域,因此请将您的 a.exe 文件放在那里。

            然后在提示符下运行:

            cd a.exe

            Cygwin 会读入它并要求您安装它。

            【讨论】:

            • cd 更改到指定目录。如果您刚刚通过调用编译器创建了一个.exe 文件,则不会要求您安装任何东西。 (通常你不会/home/Administrator;你会在你的用户名的主目录中。)
            猜你喜欢
            • 2017-06-27
            • 1970-01-01
            • 1970-01-01
            • 2011-10-26
            • 1970-01-01
            • 1970-01-01
            • 2016-10-09
            • 1970-01-01
            • 2012-02-11
            相关资源
            最近更新 更多