-lpthread链接错误

时间:2012-12-09 17:16:44

标签: c multithreading

  

可能重复:
  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

3 个答案:

答案 0 :(得分:3)

在编译/链接中添加“-lpthread”。

答案 1 :(得分:2)

编译时需要明确提及-pthread选项。 没有这个链接器就无法找到pthread库的引用。 这样做:

gcc -Wall -pthread test.c -o test.out

答案 2 :(得分:2)

您需要使用-lpthread标记对其进行编译,以便将libpthread链接到您的可执行文件。

此外,您应该添加pthread_join()函数,以便让主线程等待新线程结束。在您当前的代码中,您将看不到Hello World,因为主线程结束将导致所有子线程退出。