title: Linker returns "relocation has an invalid symbol at symbol index..."
body: <p>I am trying out some code on Ubuntu. I'm trying to run the following code </p>
  
  <pre class="lang-c++ prettyprint-override"><code>#include &lt;cstdlib&gt;
  #include &lt;cmath&gt;
  #include &lt;ctime&gt;
  #include "random.h"
  
  using namespace std;
  
  /* Function prototype! */
  void initRandomSeed();
  
  int randomInteger(int low,int high){
      initRandomSeed();
      double d= rand()/(double(RAND_MAX)+1);
      double s= d*(double(high)-low+1);
      return int(floor(low)+s);    
  }
  
  double  randomReal(int low,int high){
      initRandomSeed();
      double d=rand()/(double(RAND_MAX)+1);
      double s=d*(double(high)-low+1);
      return low+s;
  }    
  
  bool randomChance(double p){
      initRandomSeed();
      return randomReal(0,1)&lt;p;
  }            
  
  void setRandomSeed(int seed){    
      initRandomSeed();
      srand(seed);
  }    
  
  void initRandomSeed(){
      // to retain updated values across different stack frames! nice!
      static bool initialized=false;
  
      // this is executed only very first time and random value obtained from system clock!
      if(!initialized){
          srand(int(time(NULL)));
          initialized=true;
      }
  }
  </code></pre>
  
  <p>And when I try to compile the above code using <code>g++</code>,  I get the following error</p>
  
  <pre class="lang-none prettyprint-override"><code>@ubuntu:~/Chardway$ g++ random.cpp
  /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 0 has invalid symbol index 10
  /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 1 has invalid symbol index 11
  /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 2 has invalid symbol index 2
  /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 3 has invalid symbol index 2
  /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 4 has invalid symbol index 10
  /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 5 has invalid symbol index 12
  /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 6 has invalid symbol index 12
  /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 7 has invalid symbol index 12
  /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 8 has invalid symbol index 2
  /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 9 has invalid symbol index 2
  /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 10 has invalid symbol index 11
  /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 11 has invalid symbol index 12
  /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 12 has invalid symbol index 12
  /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 13 has invalid symbol index 12
  /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 14 has invalid symbol index 12
  /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 15 has invalid symbol index 12
  /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 16 has invalid symbol index 12
  /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 17 has invalid symbol index 12
  /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 18 has invalid symbol index 12
  /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 19 has invalid symbol index 12
  /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 20 has invalid symbol index 19
  /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>Any help or links to questions that help would be really helpful! Thanks! </p>