Неопределенная ссылка на pthread_create - PullRequest
7 голосов
/ 21 марта 2012

У меня есть этот код:

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

void* cuoco(void* arg)
{
    fprintf(stderr,"Inizio codice cuoco\n");
    fprintf(stderr,"Fine codice cuoco\n");
    return NULL;
}

void* cameriere(void* arg)
{
    fprintf(stderr,"Inizio codice cameriere\n");
    fprintf(stderr,"Fine codice cameriere\n");
    return NULL;
}

void* cliente(void* arg)
{
    fprintf(stderr,"Inizio codice cliente\n");
    fprintf(stderr,"Fine codice cliente\n");
    return NULL;
}

int main(int argc, char* argv[])
{
    void* (*routine)(void*);
    routine=cuoco;
    pthread_t thread_cuoco,thread_cameriere,thread_cliente;
    pthread_create(&thread_cuoco,NULL,routine,NULL);
    return 0;
}

И в опциях компилятора я вставляю -lpthread
Но там написано:
"Неопределенная ссылка на pthread_create"
Я использую Ubuntu 10.10, поэтому у меня уже установлена ​​библиотека pthread, я не могу понять причину этой ошибки.

Ответы [ 5 ]

29 голосов
/ 21 марта 2012

Используйте -lpthread в качестве последнего флага компилятора.

пример: gcc -o sample sample.c -lpthread

13 голосов
/ 21 марта 2012

Не видя команды компилятора, я подозреваю, что -lpthread не в конце.Библиотеки должны находиться в конце команды компилятора:

gcc main.c -lpthread

Однако используйте -pthread вместо -lpthread, как -pthread может добавлять другие настройки (например, определение макроса _REENTRANT).

4 голосов
/ 20 ноября 2012

Используйте следующую команду:

gcc -pthread -o main main.c

0 голосов
/ 15 мая 2016

В Eclipse вы должны добавить строку pthread.

Project -> Properties -> C/C++ Build -> Settings -> Tool Settings -> GCC Linker -> Libraries -> Libraries (-l) -> Add -> pthread

После этого вы можете создать свой проект.

0 голосов
/ 02 июня 2015

нашли решение, ребята: D просто зайдите на settings >> compiler >> linker tab >>add lib

перейдите на диск и перейдите в папку lib и найдите x86_64_linux_gnu и найдите pthread наслаждайтесь:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...