为什么在Ubuntu中不存在pthread.h库?

时间:2016-04-09 07:27:49

标签: c ubuntu

#include <pthread.h>
#include <stdio.h>

int sum;
void *runner(void *param); /* threads call this function */

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

    pthread_t tid; /* the thread identifier */
    pthread_attr_t attr; /* set of thread attributes */

    if(argc != 2) {
        fprintf(stderr, "usage: a.out <integer value>\n");
        return -1;
    }
    if(atoi(argv[1]) < 0) {
        fprintf(stderr, "%d must be >= 0\n", atoi(argv[1]));
        return -1;
    }

    /* get the 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("sum = %d\n", sum);
}

/* The thread will begin control in this function */
void *runner(void *param)
{
    int i, upper = atoi(param);
    sum = 0;

    for(i=1; i <= upper; i++) sum += i;

    pthread_exit(0);
}

这是我的书后面的代码 创建子线程并分配runner函数以累积数组中的值 但 gcc Multithread_Pthread.c 不起作用, gcc -pthread Multithread_Pthread.c 也不起作用。
是什么原因和解决方案?

哦,我忘记了每个命令的结果 使用 gcc Multithread_Pthread.c 错误 使用 gcc -pthread Multithread_Pthread.c 用法:a.out 是结果。

2 个答案:

答案 0 :(得分:2)

试试这个:

$ gcc  Multithread_Pthread.c -lpthread

答案 1 :(得分:2)

补充Ren的答案:你应该在链接它们之前尝试编译目标文件,而不是用一个命令构建整个程序。试试这个:

gcc -c Multithread_Pthread.c

这将正确创建一个&#34; Multithread_Pthread.o&#34;目标文件,证明&#34; pthread.h&#34;在系统头文件中找到。

接下来是尝试链接的命令:

gcc Multithread_Pthread.o

您将收到相同的消息错误,证明您这是一个链接错误。