Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Cygwin中执行文件?_C_Gcc_Cygwin - Fatal编程技术网

如何在Cygwin中执行文件?

如何在Cygwin中执行文件?,c,gcc,cygwin,C,Gcc,Cygwin,如何使用Cygwin shell执行a.exe 我在Windows上的Eclipse中创建了一个C文件,然后使用Cygwin导航到该目录。我在C源文件上调用了gcc,生成了a.exe。我想在提示符下运行a.exe/a.exe您只需键入文件名即可调用它。您可能需要调用./a.exe,因为出于安全原因,当前目录通常不在路径上。只需在shell中键入./a即可 > a 确保找到它(路径)。要在当前目录中执行文件,使用的语法是:/foo 正如allain所提到的,/a.exe是使用Cygwin在

如何使用Cygwin shell执行
a.exe


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

/a.exe

您只需键入文件名即可调用它。您可能需要调用./a.exe,因为出于安全原因,当前目录通常不在路径上。

只需在shell中键入./a即可

> 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位LSB可执行文件”的Linux可执行输出文件,但它会生成类型为“PE32可执行MS Windows”的Windows可执行文件,该文件依赖于cygwin1.dll,所以它需要在cygwin shell下运行。如果您需要在dos提示下独立运行,则它们cygwin1.dll需要位于您的Windows路径中


-广告。

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

然后在提示符处运行:

cd a.exe


Cygwin将读取它,并要求您安装它。

如果我想在另一台没有Cygwin的计算机上运行我的程序,如何消除这种依赖性?您可以尝试使用-mno Cygwin删除它,但是您缺少它提供的所有UNIX API-mno cygwin通常与MinGW(www.MinGW.org)一起使用。你知道为什么会这样吗/a、 exe是有意义的,但如果没有扩展,则不应运行该程序。有什么特别的原因吗?那可能是因为cygwin知道事情的真相并且很聪明。UNIX程序通常没有文件扩展名,因此,如果cygwin的目的是在Windows上给人一种UNIX的感觉,那么提供释放程序文件扩展名的选项是有意义的。
cd
更改到指定的目录。如果您刚刚通过调用编译器创建了一个
.exe
文件,则不会要求您安装任何东西。(通常你不会在
/home/Administrator
;你的用户名会在home目录中。)将当前目录
放在
$PATH
中是个坏主意。如果要在当前目录中执行命令,请键入
/a
/a
也可以;Cygwin足够聪明,可以将
a.exe
视为
a
(为了与Unix兼容,Unix不使用可执行文件的默认
.exe
后缀)。