Windows命令提示符下g++无法工作。已安装Cygwin。

6
我已经安装了Eclipse和CDT(使用C/C++需要安装eclipse CDT),同时还安装了Cygwin以便编译文件。
在环境变量中,我将Path设置为包括以下内容:"C:\cygwin\bin;"。
通过Cygwin安装了g++、make和GDC。我通过在bin文件夹中搜索它们来确保它们都存在 - 它们都在那里。
如果我在Windows命令提示符中输入“make”,则会出现以下内容:
make: *** No targets specified and no makefile found.  Stop.

如果我在Windows命令提示符中输入"g++"或"gdc",会出现以下内容(或类似内容):
'g++' is not recognized as an internal or external command,
operable program or batch file.

换句话说,Make正常工作,但其他部分不行...但它们都在同一个bin文件夹中!这让我完全困惑了。

如果我尝试打开Cygwin Bash Shell,g ++、make和GDC都能正常工作。

然而,我需要它在命令提示符中工作,以便Eclipse能够编译我在IDE中编写的程序。

如果您知道为什么会发生这种情况,请告诉我。


你在打开cygwin shell之后更改了路径吗?如果是这样,它不会捕捉到环境中的更改。尝试重新启动cygwin shell并查看问题是否仍然存在。 - ConcernedOfTunbridgeWells
6个回答

9

我没有使用过cygwin,但我的理解是你必须从cygwin bash shell中使用它。

如果你需要使用g++,make等工具,请使用mingw,使用它时,g++可以从普通的Windows命令行中运行。


1
是的,谢谢 :) 安装mingw解决了问题,一旦我也将MingW的bin文件夹添加到Path中。谢谢! - LeigerGaming
一开始就有人建议我安装MingW,并将该程序的bin文件添加到%PATH%中。这解决了问题。我仍然不知道为什么之前它无法正常工作,因为它明显在正确的目录中找到了g++(当我在Windows中使用“which”时证明了这一点)。感谢大家的帮助。 - LeigerGaming

4

以下是我遇到的问题以及如何解决它的方法。 我的 C:\cygwin\bin\g++.exe 是一个指向 C:\etc\alternatives\g++.exe 的快捷方式,而后者又指向 C:\cygwin\bin\g++-3.exe。 将 g++ 替换为 g++-3 对我有用。


我在我的安装中找到了相同的快捷方式,并使用了相同的解决方案。 - Tim Henigan

2

在 C:\cygwin\bin 中查看是否存在 g++.exe。如果不存在,则安装未正确完成,您可能需要重新安装。这就是我的问题所在,现在已经解决了 :)


2

将Cygwin路径添加到Path变量中对我有效(Windows 8.1 64位):

进入系统属性,选择高级系统属性

进入环境变量并在系统变量中选择Path,点击编辑

添加Cygwin路径... 对于32位:

C:\Cygwin\bin;C:\Cygwin\usr\bin

64位系统:

C:\Cygwin64\bin;C:\Cygwin64\usr\bin

1
在CMD窗口中,尝试输入“bash”以在该窗口中启动bash shell。如果不起作用,则cygwin bin目录不在您的路径上。
如果它起作用了,请输入“type g++”和“type make”以查看这些命令正在使用的路径。我相信您的问题与PATH变量有关。

当我在命令提示符中输入bash时,出现了以下内容:---“bash-3.2$”--- g++和make可以从此提示符中工作。 - LeigerGaming

0

你可以安装Windows版本来帮助确定正在运行哪些可执行文件。

也许它从完全不同的地方获取了'make',而你添加到%PATH%中的内容并没有起作用。

同时,在你看到问题的同一个命令提示窗口中键入echo %path%来进行验证,以确保。


展开,我尝试了echo %PATH%,结果出现了这个:C:\cygwin\bin;C:\Program Files\Java\jdk1.6.0_12\bin;C:\Windows\system32;(...加上其余常规路径...) - LeigerGaming
我已经安装了which。输入"which make"的结果是'/usr/bin/make',输入"which g++"的结果也是'/usr/bin/g++'(相同路径),但是make仍然可以工作而g++却不能??? - LeigerGaming

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接