title: Undefined reference to `main' when using makefile
body: <p>I have four files <code>list.h</code> <code>list.c</code> <code>test_list.c</code> <code>Makefile</code></p>
  
  <p><strong>list.h</strong></p>
  
  <pre><code>#ifndef List_H
  #define List_H
  #endif
  /*nothing else*/
  </code></pre>
  
  <p><strong>list.c</strong></p>
  
  <pre><code>#include "list.h"
  #include &lt;stdio.h&gt;
  #include &lt;stdlib.h&gt;
  /*nothing else*/
  </code></pre>
  
  <p><strong>test_list.c</strong></p>
  
  <pre><code>#include "list.h"
  #include &lt;stdio.h&gt;   
  int main(){
      return 0;
  }
  /*nothing else*/
  </code></pre>
  
  <p><strong>Makefile</strong></p>
  
  <pre><code>CC=cc
  CXX=CC
  CCFLAGS= -g -std=c99 -Wall -Werror
  
  all: list test_list
  
  %.o : %.c
      $(CC) -c $(CCFLAGS) $&lt;
  
  test_list: list.o test_list.o
      $(CC) -o test_list list.o test_list.o
  
  test: test_list
      ./test_list
  
  clean:
      rm -f core *.o test_list
  </code></pre>
  
  <p>when I input make in shell, here comes the error:</p>
  
  <blockquote>
    <p>/usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_line): relocation 0 has invalid symbol index 2
        /usr/lib/gcc/i686-linux-gnu/4.8/../../../i386-linux-gnu/crt1.o: In function <code>_start':(.text+0x18): undefined reference to</code>main'
        collect2: error: ld returned 1 exit status
        make: *** [list] Error 1</p>
  </blockquote>
  
  <p>What is wrong here?</p>