title: undefined reference pthread_create
body: <p>I am trying to make sense of a program:</p>
  
  <pre><code>#include &lt;stdio.h&gt; 
  #include &lt;stdlib.h&gt; 
  #include &lt;unistd.h&gt; 
  #include &lt;pthread.h&gt;
  
  int main(int argc, char** argv) {
  
  volatile double fShared = 0.0;
  // create pthread structures - one for each thread
  pthread_t t0;
  pthread_t t1;
  //Arbitrary pointer variables - void* is a pointer to anything
  void *thread_res0;
  void *thread_res1;
  int res0,res1;
  //create a new thread AND run each function
  // we pass the ADDRESS of the thread structure as the first argument 
  // we pass a function name as the third argument - this is known as a FUNCTION pointer 
  // you might want to look at the man pages for pthread_create 
   res0 = pthread_create(&amp;t0, NULL, do_this, (void*)"");
   res1 = pthread_create(&amp;t1, NULL, do_that, (void*)"");
  // Two threads are now running independently of each other and this main function
  // the function main is said to run in the main thread, so we are actually running 
  
  // The main code can now continue while the threads run - so we can simply block
   res0 = pthread_join(t0, &amp;thread_res0);
   res1 = pthread_join(t1, &amp;thread_res1);
  
   printf ("\n\nFinal result is fShared = %f\n",fShared);
   return (EXIT_SUCCESS);
  } 
  </code></pre>
  
  <p>It should be noted that do_this and do_that are functions created earlier in the program. I am getting the following errors:</p>
  
  <pre><code>seed@ubuntu:~/Programs$ Homework2OS.c
  /tmp/cceiRtg8.O: in function 'main'
  Undefined reference to 'pthread_create' 
  Undefined reference to 'pthread_create'
  Undefined reference to 'pthread_join' 
  Undefined reference to 'pthread_join' 
  </code></pre>
  
  <p>We were given this bit of code to fix. I have found elsewhere the format for the pthread_create constructor. Do I need to actually define it  above the main? I was under the impression it was imported with the  library.</p>
  
  <p>I would also venture to guess that it has something to do with the fourth parameter? I understand that the first parameter is the location of the thread (defined above), the second is NULLed, the third is the function call but I do not quite understand what the fourth parameter is supposed to be.</p>
  
  <p>What's wrong?</p>