[q] linux thread programming 에서...

khk의 이미지

아주 간단한 다음과 같은 thread 예제를 돌리려고 하는데
컴파일이 안됩니다...

#include <stdio.h>
#include <pthread.h>

void print_message_function(void *);

main() {
   pthread_t thread1, thread2;
   char *message1 = "Hello";
   char *message2 = "World";
   pthread_attr_t attr1, attr2;
   
   pthread_create(&thread1, &attr1, (void *)&print_message_function, (void *)message1);
   pthread_create(&thread2, &attr2, (void *)&print_message_function, (void *)message2);

   exit(0);
}

void print_message_function(void *ptr) {
   char *message;

   message = (char *)ptr;
   printf("%s ", message);
}

$ gcc -o thread1 thread1.c
/tmp/ccZuHiBU.o: In function `main':
/tmp/ccZuHiBU.o(.text+0x25): undefined reference to `pthread_create'
/tmp/ccZuHiBU.o(.text+0x3d): undefined reference to `pthread_create'
collect2: ld returned 1 exit status
$

위와 같이 pthread_create 함수 자체를 못찾는 에러가 발생합니다.
#include <pthread.h>도 해줬는데 이유가 무엇인지 모르겠네요...

참고로 Redhat 7.3 시스템이며
Kernel 2.4.18
gcc-2.96
glibc-2.2.5-34
입니다.

불량청년의 이미지

라이브러리 링크를 안하신거 같군요.

컴파일 할 때 뒤에 -lpthread 라고 해주셔요.

예전에 해봐서 가물가물 하네요. ㅡ,.ㅡ;

H/W가 컴퓨터의 심장이라면 S/W는 컴퓨터의 영혼이다!

khk의 이미지

-lpthread 하니까 되네여.
감사합니다~