title: How can main.o not be created last during compilation of C project?
body: <p>I've watched the installation of GNU make on my computer wth some
  attention. It is a relatively simple compilation : it creates successively
  an .o file from each .c file, then creates an executable by linking
  all the .o files, in the order in which they were created :</p>
  
  <pre><code>gcc  -g -O2 -rdynamic  -o make ar.o arscan.o commands.o default.o dir.o expand.o 
  file.o function.o getopt.o getopt1.o guile.o implicit.o job.o load.o loadapi.o 
  main.o misc.o output.o read.o remake.o rule.o signame.o strcache.o variable.o 
  version.o vpath.o hash.o remote-stub.o glob/libglob.a
  </code></pre>
  
  <p>What I don't get here is the following : how can  main.o
  not appear last on this list ? Because using the executable on
  some arguments is equivalent to calling function main in 
  main.c on those arguments, so anything created after main.o
  seems useless. </p>