【问题标题】:Codeblocks compiles, GCC does not代码块编译器,GCC 没有
【发布时间】:2014-03-27 00:29:55
【问题描述】:

我有一个 C++ 程序,大约 7 个头文件和 7 个.cpp 文件都直接挤成一个。如果我尝试在 CodeBlocks 中编译它,一切正常且花花公子。完全没有问题。

但是,我试图让它在 Unix 命令行下工作。我正在通过键入

进行基本编译
g++ main.cpp

这应该会生成一个名为a.out(默认情况下)的文件,我将运行它。

但是,我收到大量未定义的引用错误。为什么会发生这种情况,我该如何解决?

【问题讨论】:

  • 其他 6 个 .cpp 文件呢?
  • 未定义的参考错误是针对我的每个析构函数和一些随机方法的。
  • 如果 main.cpp 使用了其他源文件中的函数,则需要在调用 g++ 时列出它们。
  • 大约7个头文件和7个.cpp文件都直接卡在一个文件中这是否意味着您将14个文件复制粘贴到一个文件中?
  • 你在使用“g++ file1.cpp file2.cpp file3.cpp ....”等吗??

标签: c++ gcc compilation g++ codeblocks


【解决方案1】:

我觉得这个问题很奇怪,因为 CodeBlocks 使用 G++。

使用命令行g++编译时,需要指定所有需要编译链接的源文件:

g++ -o main main.cpp file1.cpp file2.cpp  

您还需要使用-l 选项包含库。这些库取决于您的操作系统和平台。

【讨论】:

  • 代码块是否可以选择显示它传递给 g++ 的命令行?
  • 我正在使用 Unix,我如何指示库?是否默认包含任何库?
  • 谁知道,谁在乎,效果很好。非常感谢命令行帮助!很棒的提示!
  • @MattMcNabb 它可能在某个地方,是的,但此时包括所有 .cpp 文件,使用 -o 参数和“主”对象名称工作正常。不过建议很好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-08
  • 1970-01-01
  • 2014-09-09
相关资源
最近更新 更多