title: Issue with simple Makefile: undefined reference to symbol 'cos@@GLIBC_2.2.5'
body: <p>I'm trying to compìle some test C code using a Makefile.
  The <code>main.c</code> file includes two headers:</p>
  
  <pre><code>#include "circle_buffer.h"
  #include "window.h"
  </code></pre>
  
  <p>and when I execute the following Makefile</p>
  
  <pre><code># compiler
  CC=gcc
  
  # compiler flags:
  #  -g    adds debugging information to the executable file
  #  -Wall turns on most, but not all, compiler warnings
  CFLAGS=
  
  # include path
  INCLUDES =
  
  # library path and names    
  LIBS=-L/usr/lib/x86_64-linux-gnu -lsndfile
  
  MAIN = test
  
  $(MAIN): main.o circle_buffer.o window.o
      $(CC) main.o circle_buffer.o window.o -o $(MAIN) $(LIBS)
  
  main.o: main.c circle_buffer.h window.h
      $(CC) -c main.c $(INCLUDES)
  
  circle_buffer.o: circle_buffer.c circle_buffer.h
      $(CC) -c circle_buffer.c $(INCLUDES) 
  
  window.o: window.h
      $(CC) -c window.c $(INCLUDES) 
  
  .PHONY: clean
  
  clean:
      rm -rf *o $(MAIN)
  </code></pre>
  
  <p>I get</p>
  
  <pre><code>xxx@xxx:~/source$ make
  gcc -c main.c 
  gcc -c circle_buffer.c  
  gcc -c window.c  
  gcc main.o circle_buffer.o window.o -o test -L/usr/lib/x86_64-linux-gnu -lsndfile
  /usr/bin/ld: window.o: undefined reference to symbol 'cos@@GLIBC_2.2.5'
  //lib/x86_64-linux-gnu/libm.so.6: error adding symbols: DSO missing from command line
  collect2: error: ld returned 1 exit status
  make: *** [test] Error 1
  </code></pre>
  
  <p>If I remove <code>#include "window.h"</code> from <code>main.c</code>, and all the references to window.o/h/c in the Makefile, it works.</p>
  
  <p>What am I missing? Where am I breaking the rule</p>
  
  <pre><code>target: dependencies
  [tab] system command
  </code></pre>
  
  <p>?</p>