Using pthread on L4/Fiasco

Marcus Haehnel mhaehnel at os.inf.tu-dresden.de
Wed May 23 10:08:29 CEST 2012


Hi,

Am 2012-05-23 09:01, schrieb 석현철:
> Hi. Hackers
>
> I’m trying to use pthread in an application which runs on L4.
>
> I modified “main.c” in Hello application, including “#include
> <pthread.h>”.
>
> And when I compiled L4Re, I got error messages:
>
> main.o: In function `main':
>
> /root/l4re-core-2011081207/src/l4/pkg/hello/server/src/main.c:39:
> undefined reference to `pthread_create'
>
> /root/l4re-core-2011081207/src/l4/pkg/hello/server/src/main.c:44:
> undefined reference to `pthread_join'
>
> make[5]: *** [hello] Error 1
>
> I think this is because it cannot fine pthread.h header file. But I
> don’t know how to fix it.
>

The error message has nothing to do with the header, as it is an error 
in the link phase, where the symbols of the libpthread can not be 
resolved.


> When I looked up previous lists, I could find one thread related to
> pthread in 2011 list.
>
> (the thread title is “Silly Pthread Issues”)
>
> I think that it is the same problem, but the reply is only one. Said
> “Add REQUIRES_LIBS = libpthread to the Makefile.”
>

Yes, you need to include this line in your Makefile and for me this 
leads to the program linking correctly.
Are you sure you included it in server/src/Makefile and not somewhere 
else? Can you show us your Makefile and the Output of

make V=1

to see the compiler and linker commands invoked?


> Actually, I tried it, but I couldn’t solve the problem.
>
> How can I use the pthread? Please, Help me!!
>
> Thank you!
>
> Hyunchul Seok
>


Kind regards,

Marcus

> The modified code is below:
>
> #include <stdio.h>
>
> #include <unistd.h>
>
> //#include <pthread-l4.h>
>
> #include <pthread.h>
>
> void *process_test(void *arg)
>
> {
>
>  int i = (int)arg;
>
>  int j;
>
>  for (;;)
>
>  {
>
>  for (j = 0; j < i; j++) {
>
>  printf(" ");
>
>  }
>
>  printf("%d threadn", i);
>
>  sleep(i);
>
>  }
>
> }
>
> int main(void)
>
> {
>
>  pthread_t threads[10];
>
>  int status[10];
>
>  int i;
>
>  for (i = 0; i < 3; i++) {
>
>  pthread_create(&threads[i], NULL, process_test, (void *)i);
>
>  puts("New thread creation!");
>
>  }
>
> for (i = 0; i < 3; i++) {
>
>  pthread_join(threads[i], (void **)&status[i]);
>
>  }
>
>  return 0;
>
> }





More information about the l4-hackers mailing list