您的位置:首页 > 运维架构 > Linux

【linux c 编译】collect2: ld returned 1 exit status

2014-08-22 11:10 471 查看
最关键的是-lpthread

在Linux下创建线程时,编译时会出现下面的错误,

[root@linuxserver 807]# gcc -o 22 22.c

/tmp/cc21HcoW.o(.text+0x4c): In function `main':

: undefined reference to `pthread_create'

collect2: ld returned 1 exit status

程序为:

#include <unistd.h>

#include <pthread.h>

#include <stdio.h>

#include <stdlib.h>

void testthread(void)

{

printf("I
am working.\n");

printf("I
am stopping.\n");

pthread_exit(0);

}

int main(int argc,char *argv[])

{

int
i=0;

pthread_t
pid;

char
*szP=NULL;

while(1)

{

i++;

pthread_create(&pid,NULL,(void
*)testthread,(void *)&i);

printf("ok%d,pid=%d\n",i,pid);

sleep(5);

}

}

此时,只需改变编译方式

将gcc -o 22 22.c 改变为 gcc -O2 -Wall -o 22 22.c -lpthread

最关键的是-lpthread

根据错误

/tmp/cc21HcoW.o(.text+0x4c): In function `main':

: undefined reference to `pthread_create'

collect2: ld returned 1 exit status

可以看出是在ld的时候系统无法找到pthread_create函数。也就是说编译器在link得时候找不到其中的一个使用库的函数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐