개발/삽질 기록
gcc로 pthread API 컴파일하기
kwony
2018. 10. 30. 21:59
왠만한 C 코드들은 'gcc 파일명' 명령어로 빌드가 가능한데 코드 안에서 pthread API를 사용하고 컴파일을 하면 아래와 같은 에러 메시지가 나온다.
kwony@kwony:~$ gcc thread.c
thread.c:(.text+0x79): undefined reference to `pthread_create'
thread.c:(.text+0xa9): undefined reference to `pthread_join'
collect2: error: ld returned 1 exit status
gcc 컴파일 스크립트에 디폴트로 pthread 라이브러리가 포함되지 않아서 발생하는 에러다. `-lpthread` 를 옵션으로 줘서 pthread 라이브러리를 포함시켜 빌드하면 해결 할 수 있다.
gcc thread.c -lpthread
아래 코드로 테스트를 해봤다.
#include <pthread.h>
#include <stdlib.h>
void *test(void *data)
{
}
int main()
{
int a = 100;
pthread_t thread_t;
int status;
if (pthread_create(&thread_t, NULL, test, (void *)&a) < 0)
{
perror("thread create error:");
exit(0);
}
pthread_join(thread_t, (void **)&status);
printf("Thread End %d\n", status);
return 1;
}