• ld returned 1 exit status"的解决办法


    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. ");
            printf("I am stopping. ");
            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 ",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得时候找不到其中的一个使用库的函数。
    如果差pthread_create的话可以发现其在pthread.so中,所以需要增加 -lpthread编译参数,告诉linker在link的时候使用pthread模块

  • 相关阅读:
    Python深拷贝和浅拷贝解析
    python中count函数的用法
    Jenkins + gitlab + maven 自动打包部署项目
    nio和bio得区别
    nginx负载均衡的5种策略
    接口测试常见bug
    接口自动化面试4
    pass 语句
    if 语句
    while循环
  • 原文地址:https://www.cnblogs.com/aspirant/p/3840101.html
Copyright © 2020-2023  润新知