我下载了Ruben的 Cygwin GCC。
然而,运行后似乎无法编译任何文件。
$ touch foo.c $ gcc foo.c gcc: error: spawn: No such file or directory
作为一种解决方法,我发现这个有效:
i686-w64-mingw32-gcc foo.c
我下载了Ruben的 Cygwin GCC。
然而,运行后似乎无法编译任何文件。
$ touch foo.c $ gcc foo.c gcc: error: spawn: No such file or directory
作为一种解决方法,我发现这个有效:
i686-w64-mingw32-gcc foo.c
我曾经遇到过同样的问题,并通过安装g++包来解决,除此之外还需要安装gcc核心包。
g ++
和pkg-config
。根据安装说明,将检查CC
,CXX
和PKG_CONFIG
。我之所以会出现这个错误,是因为我在路径中有一个MinGW版本的g ++
,来自不同的安装,并且得到了相同的答案。 - Keith Prussing无论如何,您不应在Cygwin上使用它们。如果您想编译Cygwin可执行文件,请安装gcc4软件包;如果您想进行Windows上的交叉编译,请安装mingw64-i686-gcc(Win32)或mingw64-x86_64-gcc(Win64)软件包。
Gcc并不是真正的编译器。它是一个前端程序,协调必要的编译器、汇编器和连接器组件的执行。通常这些其他组件都是单独编译的程序。
所以,gcc正在尝试(有点)告诉你它找不到编译器。我猜它需要在你的PATH或预期位置上。
如果你是从Windows DOS框执行此操作,那么它肯定需要一个Windows PATH设置。
我喜欢安装Cygwin,并确保包括rxvt。这样一来,你就可以配置一个纯粹的sh(1)路径,你的环境就会变得更加文明。
当我尝试从cygwin安装目录中提取一些可执行文件并将它们复制到另一个位置时,我遇到了相同的错误。
strace向我显示了spawn未找到的文件:
/lib/gcc/x86_64-pc-cygwin/6.4.0/cc1.exe
<dir with sh.exe and cpp.exe>/../lib/gcc/x86_64-pc-cygwin/6.4.0/cc1.exe
它正常运行。
确保源文件扩展名为小写(例如 main.c,而不是 main.C):
$ gcc -o main main.C
$ gcc: error: spawn: No such file or directory
$ gcc -o main main.c
$ # all good
这只适用于gcc给出的扩展名的情况,实际源文件可以使用任何大小写的扩展名。
解释:这是根据我使用cygwin和gcc的实验得出的结论,我不知道背后的原因。
e:cyg/bin/gcc -flags
e:
和cyg
之间没有斜杠。
因此,这个命令可以成功地从Windows shell启动cygwin gcc,但是在运行过程中会出错,因为gcc
的某些组件将使用输入e:cyg/bin/gcc
的第一个参数,并且与mingw不同,这对于cygwin gcc来说不是有效的路径。
只需将命令更改为以下内容即可解决此问题:
e:/cyg/bin/gcc -flags
e:
和cyg
之间的斜杠。
e:/../folder1
这样的路径作为e:/folder1
的替代品。如果你在根文件夹并尝试使用..
进入另一个文件夹,Windows不会给出错误提示。e:/../cyg/bin/gcc -flags
..or even:
e:/../../../../../../../../../cyg/bin/gcc -flags
e:/../cyg/bin/gcc
识别为有效路径,因为当没有文件夹可以上升时,你正在向上移动一个文件夹,所以会在一半失败并显示错误信息:gcc: error: spawn: No such file or directory
。e:/cyg/bin/gcc -flags