개발/삽질 기록

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;
}