为什么gcc可以编译C ++代码却无法链接?

时间:2010-03-04 07:01:38

标签: gcc

我知道c ++代码应该用g ++编译和链接,而不是gcc。 但是为什么gcc仍然可以编译c ++源代码,尽管源代码中有很多c ++关键字。

顺便说一句,我发现我甚至可以用gcc和所有c ++代码构建一个共享库。为什么呢?

3 个答案:

答案 0 :(得分:9)

g ++是gcc,它只是自动链接到标准C ++库。

如果你的g ++代码依赖于标准库(std命名空间中的东西),你可以

  1. 使用g ++命令,全部自动
  2. 使用gcc命令,并明确指定C ++标准库(-lstdc++

答案 1 :(得分:4)

来自GCC手册页:

   For any given input file, the file name suffix determines what kind of
   compilation is done:

   file.c
       C source code which must be preprocessed.

   .
   .
   .

   file.h
       C, C++, Objective-C or Objective-C++ header file to be turned into
       a precompiled header.

   file.cc
   file.cp
   file.cxx
   file.cpp
   file.CPP
   file.c++
   file.C
       C++ source code which must be preprocessed.  Note that in .cxx, the
       last two letters must both be literally x.  Likewise, .C refers to
       a literal capital C.

它没有做的是自动链接到C ++标准库。最简单的就是在那时使用g++

答案 2 :(得分:2)

您可以使用-lstdc ++链接。