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模块

  • 相关阅读:
    [PoC]某B2B网站的一个反射型XSS漏洞
    Python中的基本语句
    视频: 千重浪Linux系统调试技术培训 03-01_Basic-CPU-Register
    POJ 2955 Brackets (区间dp 括号匹配)
    LeetCode 146 LRU Cache
    Poj1734题解
    Python
    小胖说事29-----iOS中Navigation中左滑pop页面的三种方法
    深入理解javascript之原型
    android 弹幕评论效果
  • 原文地址:https://www.cnblogs.com/aspirant/p/3840101.html
Copyright © 2011-2022 走看看