2013-05-18 197 views

回答

6

我在Cygwin64上有这个相同的问题,解决方案是PATH related..kinda。

原来,/ usr/bin和/ bin中有gcc副本(至少在我的安装中)。

执行/ bin/gcc失败,出现上述错误 - 我猜测是由于错误地假定相对路径?

执行/ usr/bin/gcc按预期工作!

在我的情况下,“问题”是我无意中将“/ bin”注入到PATH环境变量中,导致执行/ bin/gcc而不是/ usr/bin/gcc。从路径中删除“/ bin”解决了问题。

仍然不清楚为什么在不同的地方有两个gcc二进制文件(看起来是相同的)......但也许Cygwin的专家可以回答这个问题;或者也许我的安装只是被禁止。

+0

在你的路径上检查'g ++'和'pkg-config'也是值得的。根据[安装](https://github.com/matplotlib/matplotlib/blob/master/INSTALL)说明,检查“CC”,“CXX”和“PKG_CONFIG”。我得到这个错误是因为我有一个MinGW版本的'g ++'我的路径来自不同的安装,并且得到相同的答案。 –

2

gcc的是不是真正的编译器。它是一个前端程序,负责编排任何必要的编译器,汇编器和链接器组件的执行。通常这些是独立编译的程序。

所以,gcc正在尝试(种)告诉你,它不能找到的编译器。我想它需要在你的PATH或预期的位置。

如果您是从Windows DOS框执行此操作,那么它肯定需要Windows PATH设置。

我喜欢install Cygwin,确保包括rxvt。此时,您可以配置纯粹的sh(1)路径,并且您的环境更加文明。

+0

这是关键。如果将“-v”添加到gcc命令中,您可能会看到它正在尝试运行的实际工具(但无法找到)。在我的情况下,我错过了cc1plus,我需要从cygwin的g ++包安装。 –

3

Ruben的构建版本是而不是 Cygwin GCC软件包,它们是交叉编译器,它们运行在各种平台上,但使用MinGW-w64工具链定位到本地Windows。

在任何情况下,你都不应该在Cygwin上使用它们。如果您想编译Cygwin可执行文件,请安装gcc4软件包;如果要为Windows进行交叉编译,请改为安装mingw64-i686-gcc(用于Win32)或mingw64-x86_64-gcc(用于Win64)包。

9

我有同样的问题,并通过除了GCC-芯

+0

这应该在评论中。 –

+0

这也解决了我的问题 – Antonio

+0

这也可能是一个答案。帮助我解决'产卵:没有这样的文件...'问题。 – approximatenumber

1

发生此错误每当在cygwin立方厘米不能找到所需文件安装克++包解决它。

对于那些从的cygwin的bin直接内运行的东西在Windows外壳,疑难杂症需要注意的是,Windows允许您运行从这样的命令行程序:

e:cyg/bin/gcc -flags 

注意到有在e:cyg之间没有斜线。

所以这个命令会成功从Windows shell启动 cygwin的GCC,但中途跑,就会报错,因为一些份(S)的gcc将利用输入e:cyg/bin/gcc,不像MinGW的的第一个参数,对于cygwin gcc,这个不是有效路径

e:/cyg/bin/gcc -flags 

通知斜线在e:cyg之间:

这可以简单地通过改变命令加以固定。


类似的疑难杂症是由于视窗允许像e:/../folder1路径作为替代e:/folder1。如果您位于根文件夹,并且尝试使用..向上另一个文件夹,Windows不会给您一个错误。

所以,你可以开始运行 cygwin的GCC使用以下命令:

e:/../cyg/bin/gcc -flags 

..或甚至:

e:/../../../../../../../../../cyg/bin/gcc -flags 

然而,它将与gcc: error: spawn: No such file or directory因为一些成分中途失败(S )cygwin gcc的会尝试使用命令输入本身的第一个参数运行gcc,并且与mingw不同,e:/../cyg/bin/gcc不能识别zed作为cygwin的有效路径,因为您要去以上当没有文件夹要上传时,该文件夹。

像上面,这可以通过固定保持路径有效:

e:/cyg/bin/gcc -flags 
+0

链接h文件时会发生这样的混乱吗?即C文件包含一个包含另一个文件的h文件。全部使用相对路径。 VS 2017是可以的,解析路径是正确的。然而GCC失败。 – Royi

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的实验,我不知道这种行为的实际原因。

相关问题