私はこのコードを持っています:
#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ライブラリがインストールされているので、このエラーの理由がわかりません。
最後のコンパイラフラグとして-lpthreadを使用します。
例:gcc -o sample sample.c -lpthread
コンパイラコマンドが表示されないので、-lpthread
が終了していないのではないかと思います。ライブラリは、コンパイラコマンドの最後に配置する必要があります。
gcc main.c -lpthread
ただし、-pthread
が他の設定を追加する可能性があるため(たとえば、マクロ-lpthread
の定義など)、-pthread
の代わりに_REENTRANT
を使用してください。
次のコマンドを使用します。
gcc -pthread -o main main.c
Eclipseでは、文字列pthreadを追加する必要があります。
Project -> Properties -> C/C++ Build -> Settings -> Tool Settings -> GCC Linker -> Libraries -> Libraries (-l) -> Add -> pthread
この後、プロジェクトをビルドできます。