最近XUbuntu 11.10 64ビットをインストールしましたが、最も単純なpthreadの例をコンパイルするのに問題があります。
コードはpthread_simple.c
次のとおりです。
#include <stdio.h>
#include <pthread.h>
main() {
pthread_t f2_thread, f1_thread;
void *f2(), *f1();
int i1,i2;
i1 = 1;
i2 = 2;
pthread_create(&f1_thread,NULL,f1,&i1);
pthread_create(&f2_thread,NULL,f2,&i2);
pthread_join(f1_thread,NULL);
pthread_join(f2_thread,NULL);
}
void *f1(int *x){
int i;
i = *x;
sleep(1);
printf("f1: %d",i);
pthread_exit(0);
}
void *f2(int *x){
int i;
i = *x;
sleep(1);
printf("f2: %d",i);
pthread_exit(0);
}
そして、これがコンパイルコマンドです
gcc -lpthread pthread_simple.c
結果:
lptang @ tlp-linux:〜/ test / test-pthread $ gcc -lpthread pthread_simple.c /tmp/ccmV0LdM.o:関数「main」内: pthread_simple.c :(。text + 0x2c): `pthread_create 'への未定義の参照 pthread_simple.c :(。text + 0x46):「pthread_create」への未定義の参照 pthread_simple.c :(。text + 0x57):「pthread_join」への未定義の参照 pthread_simple.c :(。text + 0x68): `pthread_join 'への未定義の参照 collect2:ldが1つの終了ステータスを返しました
誰が問題の原因を知っていますか?
はい、事前環境を使用しました。これで正しく表示されるはずです。
—
chtlp
ところで、でコンパイルしてください
—
マット
-Wall
、ヘッダーがありません。(そしてsr_は正しいです。)
#include <pthread.h>