【问题标题】:Using the g++ C++ compiler from cygwin使用来自 cygwin 的 g++ C++ 编译器
【发布时间】:2013-10-01 03:39:22
【问题描述】:

我正在尝试执行我的第一个“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 时,我得到: Reading specs from: \d\cygnus\cygwin-b20\H-i586-cygwin32\bin..\lib\gcc-lib\i586 -cygwin32\egcs-2.91.57\specs gcc 版本 egcs-2.91.57 19980901(egcs-1.1 发布)

在 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

【问题讨论】:

    标签: c++ cygwin g++


    【解决方案1】:

    啊,我在安装cygwin的时候还以为g++就安装好了。那么,在这种情况下,我实际上应该先安装 g++,不是吗?

    (然后重新启动)

    【讨论】:

    • Bingo -- 不确定是否需要重启。
    • Cygwin 设置为您提供了大量可供选择的软件包,请确保您在那里选择了 g++。
    【解决方案2】:

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

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

    编辑: 似乎 OP 错误地没有安装 g++ - 对于我们所有回答这个明显问题的人来说都是一个教训 :-)

    【讨论】:

    • 您可以从 cmd 中在窗口注册表中永久设置 PATH:setx PATH c:/cygwin64/bin;%PATH% -m(在注册表中)并设置 PATH=c:/cygwin64/bin;% PATH%(在当前 shell 中)。
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

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

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

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

        【讨论】:

        • 请在这里分享,然后链接源代码。
        • 很棒的教程。正是我想要的。
        【解决方案6】:

        你确定你安装了 g++ 吗? G++ 是 C++ 编译器,而不是 C 编译器。如果你只安装了 C 编译器,你会有命令 gcc 而不是命令 g++

        【讨论】:

          【解决方案7】:

          确保它们 c:\cygwin\bin 在 PATH 中。

          希望对你有帮助。

          【讨论】:

            【解决方案8】:

            在cygwin中获取路径:

            echo $PATH
            

            这将使我们走上理解问题的道路。

            编辑

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

            mount
            

            包含 /usr/bin 的那一行是我们需要复制的那一行。

            【讨论】:

            • 如何从 shell 复制结果?它很长,我想应该有办法,但我根本无法从 shell 中复制任何东西。没办法的话,我这里试试写(10行)
            • 我已将 D:\programs\cygwin\bin 放在控制面板 --> 系统 --> ... --> 环境变量的路径中。这是设置路径的方式吗?
            • 尝试:echo $PATH > mypathfile.txt 然后在写字板或其他东西中打开 mypathfile.txt 进行复制。
            • 您有几行输出的事实表明您正在从 cygwin 中运行该命令,这是一个好的开始。
            • 谢谢,我已将输出保存在mypathfile.txt中,并粘贴在下面。
            【解决方案9】:

            调出 dos shell。

            cd c:\cygwin\bin

            输入 c++ 或 cpp

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

            如果它们不存在,则说明您尚未下载。

            【讨论】:

              【解决方案10】:

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

              【讨论】:

                【解决方案11】:

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

                编辑:啊,我看到你已经这样做了(比我的帖子快了几秒钟。)我认为你现在需要做的就是重新启动。

                【讨论】:

                • 因为 /usr/bin 已经在 gemm 的路径中,我不确定重新启动是否会有所帮助,但是对于 Windows,你永远不知道...... ;)
                【解决方案12】:

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

                【讨论】:

                • 由于连命令都没有找到,所以文件内容完全不相关。
                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2018-05-22
                • 1970-01-01
                • 2012-11-10
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多