在 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 时知道如何解析 iostream 的。
向 foo 添加了几行代码并对其进行编译,以试用 gdb。有用!谁能想到您可以使用终端窗口进行逐步调试!不过有点笨拙。
虽然 Basile 认为不需要花哨的 IDE 显然是正确的,但这有点像说我不需要摩托车,因为我可以走路。我会看看提到的其他 IDE,但我怀疑它们都会使用相同的工具链,因此都会受到我错误配置的任何影响。
Basile,请原谅我移动了球门柱。我最初的目标确实是“编译并运行 hello.cpp”,但 gdb 不可避免地是下一步。它有效,如果这是 80 年代初在 uni 使用电传打字机,我现在可能会很高兴。但这不是八十年代初,我在过去的十年里一直在使用语法着色、自动完成、变量嗅探编辑和继续调试,所以(我是忘恩负义的草皮)现在我想要,嗯,一切!