zoukankan      html  css  js  c++  java
  • undefined reference to `pthread_create' in Linux

    undefined reference to `pthread_create' in Linux

    情况说明

    在进行Linux系统多线程编程学习时,使用了 pthread_create这一系统调用。但是在使用gcc编译时出现了报错,具体如下:

    代码:

    #include <pthread.h>
    #include <stdio.h>
    #include <stdlib.h>
    /* this data is shared by the threads */
    int sum;
    /* threads call this function */
    void *runner(void *param);
    
    int main(int argc, char *argv[])
    {
        pthread_t tid;
        pthread_attr_t attr;
        if (argc != 2){
            fprintf(stderr, "usage: a.out <integer value>
    ");
            return -1;
        }
        if (atoi(argv[1]) < 0){
            fprintf(stderr, "%d must be >= 0
    ", atoi(argv[1]));
            return -1;
        }
        /* get default attributes */
        pthread_attr_init(&attr);
        /* create the thread */
        pthread_create(&tid, &attr, runner, argv[1]);
        /* wait for the thread to exit */
        pthread_join(tid, NULL);
    
        printf("the sum is %d
    ", sum);
        return 0;
    }
    
    void *runner(void *param){
        int i, upper = atoi(param);
        sum = 0;
        for(i = 0; i <= upper; i++){
            sum += i;
        }
        pthread_exit(0);
    }
    

    报错:

    /usr/bin/ld: /tmp/ccAmXOUU.o: in function `main':
    4-9-pthreads.c:(.text+0xcd): undefined reference to `pthread_create'
    /usr/bin/ld: 4-9-pthreads.c:(.text+0xde): undefined reference to `pthread_join'
    collect2: error: ld returned 1 exit status
    

    解决办法

    在编译时,加上所需要的库,即 pthread

    gcc -o test test.c -pthread
    

    参考文章

    https://stackoverflow.com/questions/1662909/undefined-reference-to-pthread-create-in-linux

    Stay Hungry, Stay Folish.
  • 相关阅读:
    HTML/CSS
    Python字符编码
    软件测试遇到的问题积累
    数学
    经济学路谱
    工具
    DataStage
    Shell编程—定时任务
    WebLogic部署
    imageView-scaleType 图片压缩属性
  • 原文地址:https://www.cnblogs.com/relaxx/p/undefined-reference-to-pthread_create-in-Linux.html
Copyright © 2011-2022 走看看