我下载了 Ruben’s的构建 Cygwin GCC
然而,在运行时似乎无法编译任何文件
$ touch foo.c $ gcc foo.c gcc: error: spawn: No such file or directory
作为一种解决方法,我发现这个工作
i686-w64-mingw32-gcc foo.c
答案 0 :(得分:11)
我遇到了同样的问题,除了gcc-core
之外还安装了g ++软件包解决了这个问题答案 1 :(得分:6)
我在Cygwin64上遇到了同样的问题,解决方案是PATH相关的...... kinda。
事实证明,/ usr / bin和/ bin中有gcc的副本(至少在我的安装中有)。
执行/ bin / gcc失败并出现上述错误 - 我猜是因为错误地假定了相对路径???
执行/ usr / bin / gcc按预期工作!
在我的情况下,“问题”是我无意中将“/ bin”注入到我的PATH环境变量中,导致/ bin / gcc被执行,而不是/ usr / bin / gcc。从路径中删除“/ bin”解决了问题。
还不清楚为什么在不同的地方有两个gcc二进制文件(看起来是相同的)......但也许Cygwin大师可以回答这个问题;或者我的装置只是foo-barred。
答案 2 :(得分:3)
Ruben的构建是不 Cygwin GCC软件包,而是它们是在各种平台上运行但使用MinGW-w64工具链定位本机Windows的交叉编译器。
无论如何,你不应该在Cygwin上使用它们。如果要编译Cygwin可执行文件,请安装gcc4软件包;如果你想为Windows进行交叉编译,请安装mingw64-i686-gcc(适用于Win32)或mingw64-x86_64-gcc(适用于Win64)软件包。
答案 3 :(得分:2)
Gcc并不是真正的编译器。它是一个前端程序,用于协调任何必要的编译器,汇编器和链接器组件的执行。通常这些其他是单独编译的程序。
所以,gcc正在尝试(有点)告诉你它不能找到编译器。我想它需要在你的PATH或预期的位置。
如果从Windows DOS框执行此操作,则肯定需要Windows PATH设置。
我喜欢install Cygwin,确保包含 rxvt 。此时,您可以配置纯粹的sh(1)路径,并且您的环境更加文明。
答案 4 :(得分:1)
只要cygwin cc找不到所需文件,就会发生此错误。
对于那些在cygwin的bin中直接运行来自 Windows shell的东西,需要注意的是Windows允许你从命令行运行程序,如下所示:
e:cyg/bin/gcc -flags
请注意,e:
和cyg
之间没有斜杠。
所以这个命令会从Windows shell成功启动 cygwin gcc,但是在运行的中途它会因为{{1}的某些组件而错误输出}将使用输入gcc
的第一个参数,与mingw不同,此不是cygwin gcc的有效路径。
只需将命令更改为:
即可解决此问题e:cyg/bin/gcc
请注意e:/cyg/bin/gcc -flags
和e:
之间的斜杠。
类似的问题是由于Windows允许cyg
之类的路径替代e:/../folder1
。如果您位于根文件夹并尝试使用e:/folder1
up 另一个文件夹,则Windows不会出错。
所以你可以使用以下命令开始运行 cygwin gcc:
..
..甚至:
e:/../cyg/bin/gcc -flags
但是,它会在e:/../../../../../../../../../cyg/bin/gcc -flags
中途失败,因为cygwin gcc的某些组件会尝试使用命令输入本身的第一个参数运行gcc: error: spawn: No such file or directory
,与mingw不同,gcc
不被cygwin识别为有效路径,因为当没有文件夹可用时,你 up 一个文件夹。
如上所述,可以通过保持路径有效来解决这个问题:
e:/../cyg/bin/gcc
答案 5 :(得分:1)
确保源文件扩展名为小写(即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的实验,我不知道这种行为的实际原因。
答案 6 :(得分:1)
当我尝试从cygwin安装目录中提取几个可执行文件并将它们复制到另一个位置时,我遇到了同样的错误。
strace向我展示了spawn找不到的文件:
/lib/gcc/x86_64-pc-cygwin/6.4.0/cc1.exe
当我将cc1.exe复制到相对于
的位置时<dir with sh.exe and cpp.exe>/../lib/gcc/x86_64-pc-cygwin/6.4.0/cc1.exe
它工作正常。