使用cygwin的g ++ C ++编译器

时间:2009-03-02 16:21:23

标签: c++ cygwin g++

我正在尝试执行我的第一个“Hello World!”在C ++中。我使用的是Windows XP,我安装了cygwin,其中安装了g ++ C ++编译器。我写了一个小的hello-world程序,并将其保存在hello.cpp中。从命令提示符我写:

  

g ++ hello.cpp

但我明白了:

  

'g ++'未被识别为内部或外部命令,可操作程序或批处理文件。

我在我的D:\ programs \ cygwin中安装了cygwin。我在D:\ cpp中使用我的hello-world文件创建了另一个目录。我的安装或路径的东西似乎不好,但我无法弄清楚是什么。我运行了cygwin的exe文件,在安装目录中我有所有必需的文件,我认为:bin文件夹,lib,Cygwin.bat等。

我已经读过,如果出现此类错误消息,我应该检查cygwin1.dll文件是否已复制到Windows的主文件夹中。这是C:\ WINDOWS目录吗?我看过那里,我那里没有这样的文件。我在cygwin的bin文件夹中有cygwin1.dll:D:\ programs \ cygwin \ bin。 另外,如何在命令的搜索路径中检查bin文件夹(D:\ programs \ cygwin \ bin)?

我认为hello-world程序不应该包含任何语法错误,我刚刚复制了它。另外,当我写

g ++ -v

我收到相同的错误消息:该命令无法识别。 如果有人给我一个暗示我应该看什么,我将不胜感激。谢谢。

以下是hello-world程序的代码:

#include <iostream>
using namespace std;

int main() {
  cout <<"Hello World!"<<endl;
  return 0;
}

我已经安装了g ++,现在当我输入g ++ -v时,我得到:读取规格:\ d \ cygnus \ cygwin-b20 \ H-i586-cygwin32 \ bin .. \ lib \ gcc-lib \ i586 -cygwin32 \ egcs-2.91.57 \ specs gcc version egcs-2.91.57 19980901(egcs-1.1 release)

在bin目录中,我有g ++。exe和gcc.exe。我不明白为什么我得到“gcc”而不是“g ++”。我不知道这有多重要,但是当我尝试在DOS命令提示符下编译程序时收到错误消息:

g ++ hello.cpp

我明白了:

hello.cpp:1: parse error before character 0357
hello.cpp: In function 'int main()':
hello.cpp:'cout' undeclared (first use this function)
hello.cpp: (Each undeclared identifier is reported only once
hello.cpp: for each function it appears in.)
hello.cpp: 'endl' undeclared (first use this function)

以下是我尝试在cygwin shell中编译程序时得到的结果:

hello.cpp:1: parse error before character 0357
hello.cpp: In function 'int main()':
hello.cpp:'cout' undeclared (first use this function)
hello.cpp: (Each undeclared identifier is reported only once
hello.cpp: for each function it appears in.)
hello.cpp: 'endl' undeclared (first use this function)
g++.exe: hello.cpp: No such file or directory
g++.exe: No input files
g++.exe: hello.cpp: No such file or directory
g++.exe: No input files
g++.exe: hello.cpp: No such file or directory
g++.exe: No input files
g++.exe: hello.cpp: No such file or directory
g++.exe: No input files
g++.exe: hello.cpp: No such file or directory
g++.exe: No input files

12 个答案:

答案 0 :(得分:3)

正如人们所说,检查路径。不要开始复制cygwin DLL - 这是不必要的,可能会在以后发现问题并且无法解决问题。

当谈到设置Windows PATH变量(和其他人)时,我发现this small program非常有用,而且比眯着眼睛看MS控制面板aplet要好。

编辑:似乎OP错误地没有安装g ++ - 这是我们所有回答首先提出明显问题的人的一个教训: - )

答案 1 :(得分:3)

啊,我认为安装cygwin时安装了g ++。所以,我应该首先安装g ++,不应该吗?

(然后重启)

答案 2 :(得分:2)

我假设你在这里使用Windows Shell。如果从cygwin Bash shell调用编译器,则应为您设置所有路径。

答案 3 :(得分:2)

几年前我写了一篇关于这个的教程,这可能有所帮助:

http://www.codeguru.com/cpp/misc/misc/compilerandpre-compiler/print.php/c8107__1/

你安装了g ++吗?它不是由Cygwin安装程序的默认设置安装的。

答案 4 :(得分:2)

确保它在路径上或您正在运行bash shell cmd提示符。

答案 5 :(得分:2)

你确定你安装了g ++吗? G ++是C ++编译器,而不是C编译器。如果您只安装了C编译器,则可以使用 gcc 命令,但不能命令 g ++

答案 6 :(得分:1)

确保c:\ cygwin \ bin位于PATH中。

希望它有所帮助。

答案 7 :(得分:1)

要获取cygwin中的路径:

echo $PATH

这将使我们了解问题。

修改

下一个命令将告诉我们cygwin认为它应该在windows中查找所有这些文件

mount

包含/ usr / bin的行是我们需要的副本。

答案 8 :(得分:1)

提出dos shell。

cd c:\ cygwin \ bin

输入c ++或cpp

或执行目录命令确实看到了内容。寻找cpp或c ++。

如果它们不存在,则表示您尚未下载。

答案 9 :(得分:0)

除了将其添加到路径(这将解决您的问题)之外,您可能还想下载make和dbg,它们也在开发路径上,但默认情况下未检查。确保选择“保持”作为整体安装选项,以便它不会重新下载所有内容。

答案 10 :(得分:0)

正如其他人所提到的,它可能是路径问题,因此您需要查看环境变量PATH。为此,请右键单击My Computer,然后单击“属性”。转到“高级”选项卡,然后单击“环境变量”按钮。从这里,查看您提到的路径是否包含在PATH变量中。如果没有,请使用您在那里看到的相同语法添加它们以分隔路径(我认为它是路径之间的分号或冒号。)

编辑:啊,我看到你已经做到了这一点(仅仅几秒就击败了我的帖子。)我认为你现在需要做的就是重启。

答案 11 :(得分:-1)

尝试创建一个新文件并自己输入代码而不复制和粘贴它。 您的代码中可能包含非法字符,这可能在您选择的编辑器中不可见。