为什么我在终端中编译 C++ 程序时会出现这些未定义的错误?

为什么我在终端中编译 C++ 程序时会出现这些未定义的错误?

我有一个 C++ 程序,可以在代码块中完美编译和运行。但是,当我尝试使用以下命令从终端编译它时:

gcc -g main.cpp -o Main

我收到很多未定义的引用:

这是程序在 Code Blocks 中运行的截图:

答案1

您应该使用 进行编译g++gcc编译 C 程序。要安装 的所有必需软件包g++,请sudo apt-get install build-essential在终端上执行,然后要编译您的程序,请执行g++ -g main.cpp -o Main

答案2

您应该g++始终将其用于 C++ 程序!

那是因为:

  • gcc是 GNU C 编译器

  • g++是 GNU C++ 编译器

因此它们是不同的编译器,因此它们是不同的软件包。主要区别如下:

  1. gcc将编译:*.c/*.cpp文件分别作为 C 和 C++。
  2. g++将会编译:*.c/*.cpp文件,但它们都将被视为 C++ 文件。
  3. 如果您使用g++链接目标文件,它会自动链接到 std C++ 库(gcc不执行此操作)。
  4. gcc编译 C 文件的预定义宏较少。
  5. gcc编译*.cppg++编译*.c/*.cpp文件有几个额外的宏。

来源:g++ 和 gcc 有什么区别?

答案3

我找到了问题所在。我没有找到具体的解决方案,但我找到了一个解决方法。显然这些类没有被链接。所以我把所有的类都放到主文件中,它完美地工作了!

相关内容