zoukankan      html  css  js  c++  java
  • 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模块

  • 相关阅读:
    微信内置浏览器的JsAPI(WeixinJSBridge)
    跨域请求 jQuery的ajax jsonp的使用
    Window10设置技巧
    Oracle命令集
    通过sql server 连接mysql
    深入 AngularUI Router
    解决Web部署 svg/woff/woff2字体 404错误
    C#四舍五入、上取整、下取整
    SQL语句:两个时间区间段,只要有交集,就能筛选出来
    url传参中文乱码问题
  • 原文地址:https://www.cnblogs.com/aspirant/p/3840101.html
Copyright © 2011-2022 走看看