可能重复:
undefined reference to pthread_create in linux (c programming)
有以下程序:
void *thread(void *vargp);
int main() {
pthread_t tid;
pthread_create(&tid, NULL, thread, NULL);
exit(0);
}
/* thread routine */
void *thread(void *vargp) {
sleep(1);
printf("Hello, world!\n");
return NULL;
}
我应该纠正它。我已经添加了包含左:
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
但我仍然遇到以下错误:
/tmp/ccHwCS8c.o: In function `main':
1.c:(.text+0x29): undefined reference to `pthread_create'
collect2: ld returned output state 1
我尝试使用编译器添加-lpthread,就像答案一样,但我仍然得到这个错误代码:
@lap:~$ gcc -Wall -lpthread 1.c -o uno
/tmp/ccl19SMr.o: In function `main':
1.c:(.text+0x29): undefined reference to `pthread_create'
collect2: ld returned exit state 1
答案 0 :(得分:3)
在编译/链接中添加“-lpthread”。
答案 1 :(得分:2)
编译时需要明确提及-pthread
选项。
没有这个链接器就无法找到pthread库的引用。
这样做:
gcc -Wall -pthread test.c -o test.out
答案 2 :(得分:2)
您需要使用-lpthread
标记对其进行编译,以便将libpthread
链接到您的可执行文件。
此外,您应该添加pthread_join()函数,以便让主线程等待新线程结束。在您当前的代码中,您将看不到Hello World
,因为主线程结束将导致所有子线程退出。