【发布时间】:2012-09-10 00:11:38
【问题描述】:
在 Windows 下,我安装了 MinGW 和 Eclipse,并使用 MinGW GCC 工具链创建了一个名为 foo 的新 C++ 项目,它可以编译、运行甚至调试。精彩的。
仍然在 Windows 下,我安装了 Cygwin,这是一项让我的互联网连接变得紧张的史诗般的任务。最终我指定了 Cygwin GCC 工具链和 bar 的项目名称。这可以编译并运行,但无法通过调试进行单步调试(声称找不到源代码)。
在 Linux 下,特别是 mint13,我安装了 Eclipse 的全唱全舞 C++ 版本以及所有的装饰,并创建了一个新的 C++ 项目,并选择了更鼓舞人心的名称 baz 和 Linux GCC 工具链。 Eclipse 抱怨找不到 iostream。
我对此感到很困惑。如果我启动一个终端窗口并运行 g++,就会发现它,很明显我至少有一些 GNU C++ 的东西。我不知道缺少什么。 Linux 对我来说是一个新世界。谁能提供指导?
作为记录,生成的代码位于名为 foo.cpp(或 bar.cpp,根据项目名称)的文件中,如下所示:
#include <iostream>
using namespace std;
int main() {
cout << "Hello World" << endl; // prints Hello World
return 0;
}
@bmargulies - 我知道你的评论是在开玩笑,但我不会使用粉红色的 emacs。我会在 Windows 工作站上设置 SAMBA 并使用 Textpad,因为我有足够的东西来学习,而无需不必要地学习使用新的文本编辑器。我选择 Eclipse 的原因是徒劳地希望它可以提供一个带有集成调试器的工作基线,从中可以探索 Linux 上 C++ 的勇敢新世界。结合 MinGW,它确实在 Windows 上提供了。
我知道这里最大的问题不是工具,而是我的无知和来自不同世界的一系列期望。缺乏使用 C++ 的经验使情况更加复杂——我在 C++ 方面的唯一经验是 15 年前使用 TurboC。
一个非常混乱的来源是用于解析库引用的机制。
很多项目似乎都使用 make,据我所知,它是一种用于编译和链接项目或项目集的脚本文件。 Make 似乎有多种风格,似乎也有使用 makefile 的替代品以及不使用的替代品。
[咒骂]什么乱七八糟的。
@Basile - 我不喜欢使用 Eclipse,而且我很清楚脚本比点击使用 IDE 配置的好处(其中最重要的是您可以对构建过程进行源代码控制) .我感谢你的阅读清单。也许这是一个愚蠢(或不成熟)的问题,但我不得不问:如果没有像 Eclipse 这样将编辑器与构建工具集成在一起的 IDE,是否可以进行逐步调试?
@bmargulies - 我同意你的观点,工具链定义可能有问题,但我缺乏对此进行有意义调查的背景和经验。如上所述,我在 Windows 下使用不同的工具链取得了不同程度的成功,因此可以合理地得出结论,工具链是问题的重要因素。唉,在Linux下我不能选择MinGW工具链。
按照 Norm 的建议,我能够从命令行编译 foo.cpp。 hello world 程序以所需的行为执行,但我仍然不知道 g++ 是如何知道如何在花哨的 IDE 工具不知道的情况下解析 iostream 的。
在 foo 中添加了几行代码并对其进行编译,以试用 gdb。有用!谁能想到您可以使用终端窗口进行逐步调试!不过有点笨拙。
虽然 Basile 认为不需要花哨的 IDE 显然是正确的,但这有点像说我不需要摩托车,因为我可以走路。我会看看提到的其他 IDE,但我怀疑它们都将使用相同的工具链,因此都会受到我错误配置的任何影响。
Basile,请原谅我移动了球门柱。我最初的目标确实是“编译并运行 hello.cpp”,但 gdb 不可避免地是下一步。它有效,如果这是 80 年代初在 uni 使用电传打字机,我现在可能会很高兴。但现在不是 80 年代初,我在过去的十年里一直在使用语法着色、自动完成、变量嗅探、编辑和继续调试,所以(我是忘恩负义的草皮)现在我想要,嗯,一切!
【问题讨论】:
-
使用 gnu emacs 而不是 Eclipse 进行 C++ 开发 :-)
-
说真的,Eclipse 中的工具链定义有问题。
-
您只需要
g++在 Linux 上编译 C++ 代码(不需要 Eclipse 或 IDE)。但是您需要正确调用它,并且学习如何使用诸如make和代码Makefile-s 之类的构建器会有所帮助。因此,在编辑器(Emacs、Gedit、Geany..)中编写您的helloworld.cpp,学习编写Makefile,输入make来构建您的程序,然后输入helloworld来运行它。 -
Hi -1) 确保您的源文件后缀为“.cpp”(用于“C++”)而不是 .c(用于“C”,它没有 iostream)2)确保正确的标头(和库!)目录包含在您的项目中,并且 3) 在此处查找 $LANG 的潜在问题:help.eclipse.org/indigo/…
-
我确实从他们的源代码编译了很多免费(gpl-ed)的 Linux 软件,但没有一个使用 Eclipse。这意味着什么......