title: undefined main during linking but defined during full compilitaion process
body: <p>I am novice in C programming. So I learned different process of compilation(preproccessing, compiling, linking). My program is</p>
  <pre><code>#include &lt;stdio.h&gt;
  
  #define testDefinition(x) printf(#x &quot; is equal to %lf\n&quot;,x)
  
  int main(void)
  {
      testDefinition(3.15);
      return 0;
  }
  </code></pre>
  <p>It is simple program which doesn't have any sense,but problem is when I use <code>gcc -o test test.c </code> it works fine, but when I do that</p>
  <pre><code>gcc -E test.c -o test.i
  gcc -C test.i -o test.o
  gcc  test.o -o test
  </code></pre>
  <p>I get error</p>
  <pre><code>usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o: in function `_start':
  (.text+0x24): undefined reference to `main'
  collect2: error: ld returned 1 exit status
  </code></pre>
  <p>I am using Ubuntu 20.04 and GCC compiler.</p>