title: g++ link problems: In function `_start': (.text+0x20): undefined reference to `main'
body: <p>I am getting an undefined reference to main error - even though I have defined main, and (AFAICT), I have linked it correctly. Here is my code and the commands I used:</p>
  
  <pre><code>// ################################################
  //proj1.h
  #ifndef  __SCRATCH_PROJ1_H
  #define  __SCRATCH_PROJ1_H
  
  int addOne(int i);
  
  #endif /*__SCRATCH_PROJ1_H */
  
  // ################################################
  
  //proj1.cpp
  #include "proj1.h"
  
  int addOne(int i){
      return i+1;
  }
  
  
  // ################################################
  //proj1_unittest.cpp
  
  #include "proj1.h"
  #include "gtest/gtest.h"
  
  // Test Function
  TEST(addOneTest, Positive) {
      EXPECT_EQ(1,addOne(0));            
      EXPECT_EQ(2,addOne(1));            
      EXPECT_EQ(40320, addOne(40319));   
  }
  
  TEST(addOneTest, Negative) {
      EXPECT_FALSE(addOneTest(-1));      
  }
  
  
  GTEST_API_ int main(int argc, char **argv) {
    testing::InitGoogleTest(&amp;argc, argv);
    return RUN_ALL_TESTS();
  }
  </code></pre>
  
  <p>Here is the console output:</p>
  
  <pre><code>$ g++ -isystem -pthread -c ${SOURCE_DIR}/proj1.c -o ${SOURCE_DIR}/proj1.o
  $ g++ -o ${SOURCE_DIR}/mytest ${SOURCE_DIR}/*.o -L${GTEST_DIR} libgtest.a 
  /usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/crt1.o: In function `_start':
  (.text+0x20): undefined reference to `main'
  collect2: ld returned 1 exit status
  </code></pre>
  
  <p>Why is the <code>main()</code> function not been found by the linker?</p>