(.text + 0x20)是什么:未定义对“ main”的引用

时间:2019-09-13 21:42:00

标签: c++ linker-errors

有人可以帮助我解决下面的代码清单中出现的错误吗?

错误很可能与构造函数/析构函数有关:

  

/ usr / bin / ld:   /usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/Scrt1.o:在   函数`_start':

     

(。text + 0x20):未定义对“ main”的引用

     

collect2:错误:ld返回1个退出状态

代码清单:

                         // counter_id.cpp
                        // Obco class member-function  definitions.
   #include <iostream>

   #include "counter_id.h"  // include counter class definition

   using namespace std;

    // constructor sets object's ID number and descriptive message
   Obco::Obco( int ID, string messageString )
  : objectID( ID ), message( messageString )
     {
   cout << "Object " << objectID << "constructor runs"
     << message << endl;
     } // end CreateAndDestroy constructor


     // destructor
    Obco::~Obco()
   {
   // output newline for certain objects; helps readability
     cout << ( objectID == 1 || objectID == 6 ? "\n" : "" );
     cout << "Object " << objectID << " destructor runs "
     << message << endl;
       } // end ~Obco destructor

1 个答案:

答案 0 :(得分:3)

您不仅要单独编译(-c),还试图建立完整链接,但是链接器未找到任何main函数。

要获得完整的链接,您需要在g++调用中包括所有源文件或目标文件(尤其是带有main函数的文件)。

要仅单独编译一个文件(以供以后链接),则需要添加-c选项。