Неопределенная ссылка на pthread create

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

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

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

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

void* cliente(void* arg)
{
    fprintf(stderr,"Inizio codice clienten");
    fprintf(stderr,"Fine codice clienten");
    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 ответов


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

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


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

главная ССЗ.c-lpthread

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

используйте эту команду:

GCC-pthread-o main main.c


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

проект - > свойства - > сборка C/C++ - > Настройки - > настройки инструмента - > Компоновщик GCC - > библиотеки- > Библиотеки (- l) - > добавить - > pthread

после этого создайте свой проект.


найдено решение ребята: D просто перейдите в настройки > > компилятор > > вкладка компоновщик > > добавить lib перейдите на диск и перейдите в папку lib и найдите "x86_64_linux_gnu" и найдите "pthread" наслаждайтесь :)