title: Compile/link error using pthread
body: <p>I try to make a little program that sorts an array using threads but I can't get it to compile with the thread support.</p>
  
  <p>Error:</p>
  
  <pre><code>sortieren.c:(.text+0xd7): undefined reference to `ptread_create'
  </code></pre>
  
  <p>I used a make file for easy compiling but also on command line I can't get it to work.</p>
  
  <p>Basic code:</p>
  
  <pre><code>#include &lt;pthread.h&gt;
  int main(int argc, char **argv) {
      pthread_t threads[2];
      // code snipped
      int ret = ptread_create(&amp;threads[0], NULL, threadOne(), NULL);
      printf("ret: %d\n", ret);
      // code snipped
  }
  </code></pre>
  
  <p>Make file:</p>
  
  <pre><code>sortieren : sortieren.o
      gcc sortieren.o
  
  sortieren.o : sortieren.c 
      gcc -pthread -c sortieren.c
  </code></pre>
  
  <p>Using <code>make sortieren</code> results in this output</p>
  
  <pre><code>gcc -pthread -c sortieren.c
  gcc sortieren.o
  sortieren.o: In function `main':
  sortieren.c:(.text+0xd7): undefined reference to `ptread_create'
  collect2: ld returned 1 exit status
  make: *** [sortieren] Fehler 1
  </code></pre>
  
  <p>Of course I tried to google but every "solution" I found didn't worked for me. I tried <code>-pthread</code> or <code>-lpthread</code> everywhere in my make file. To be sure that I didn't do anything wrong in my code, I also tried <a href="https://computing.llnl.gov/tutorials/pthreads/samples/hello.c" rel="nofollow">a public sample</a>:</p>
  
  <pre><code>#include &lt;pthread.h&gt;
  #include &lt;stdio.h&gt;
  #include &lt;stdlib.h&gt;
  #define NUM_THREADS 5
  
  void *PrintHello(void *threadid)
  {
     long tid;
     tid = (long)threadid;
     printf("Hello World! It's me, thread #%ld!\n", tid);
     pthread_exit(NULL);
  }
  
  int main(int argc, char *argv[])
  {
    pthread_t threads[NUM_THREADS];
    int rc;
    long t;
    for(t=0;t&lt;NUM_THREADS;t++){
      printf("In main: creating thread %ld\n", t);
      rc = pthread_create(&amp;threads[t], NULL, PrintHello, (void *)t);
      if (rc){
        printf("ERROR; return code from pthread_create() is %d\n", rc);
        exit(-1);
      }
    }
    pthread_exit(NULL);
  }
  </code></pre>
  
  <p>The error is the same there.</p>
  
  <p>System: Ubuntu 11.04 64bit, GCC-Version 4.5.2</p>
  
  <pre><code>Using built-in specs.
  COLLECT_GCC=gcc
  COLLECT_LTO_WRAPPER=/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/lto-wrapper
  Target: x86_64-linux-gnu
  Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.5.2-8ubuntu4' --with-bugurl=file:///usr/share/doc/gcc-4.5/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.5 --enable-shared --enable-multiarch --with-multiarch-defaults=x86_64-linux-gnu --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib/x86_64-linux-gnu --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.5 --libdir=/usr/lib/x86_64-linux-gnu --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-plugin --enable-gold --enable-ld=default --with-plugin-ld=ld.gold --enable-objc-gc --disable-werror --with-arch-32=i686 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
  Thread model: posix
  gcc version 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4)
  </code></pre>
  
  <p><strong>Update</strong></p>
  
  <p>Using what @Banthar mentioned doesn't work, too.</p>
  
  <pre><code>$ make sortieren
  gcc -c sortieren.c
  gcc -lpthread sortieren.o
  sortieren.o: In function `main':
  sortieren.c:(.text+0xd7): undefined reference to `ptread_create'
  collect2: ld returned 1 exit status
  make: *** [sortieren] Fehler 1
  </code></pre>