搞点有意思的 👀

gcc 和 g++

2023.10.23

用 gcc 直接编译 cpp,报错: undefined reference to std::cout

在网上搜了下,在 StackOverflow 中找到答案:建议用g++ 来编译 cpp,原来是 gcc 需要手动链接 C++ 的库,而 g++ 会自动链接 C++ 的库

  • 使用 gcc 编译并且指定标准库(-lstdc++):
$ gcc -o main main.cpp -lstdc++
  • 使用 g++ 编译:
$ g++ -o main main.cpp

g++ 等同于 gcc -xc++ -lstdc++ -shared-libgcc

  • -x: 指定语言
  • -l: 链接库
  • -shared-libgcc: 使用共享的 libgcc

gcc 和 g++ 有何不同呢 ?

gcc 和 g++ 都是 GUN Complier Collection 的一部分,gcc 是 GNU Compiler Collection 的 C 语言编译器(主要),而 g++ 是 GNU Compiler Collection 的 C++ 语言编译器。

  • gcc 和 g++ 都支持 *.c*.cpp 文件的编译,g++ 和 gcc 绝大多数都相同。
  • g++ 编译更倾向于 *.cpp 文件,它会自动链接 std c++ 库。gcc 编译倾向于 *.c 文件,如果需要编译 *.cpp 需要指定 std c++

学习参考