-1

重複の可能性:
Linuxでのpthread_createへの未定義の参照(cプログラミング)

次のプログラムがあります。

void *thread(void *vargp);

int main() {
  pthread_t tid;

  pthread_create(&tid, NULL, thread, NULL);
  exit(0);
}

/* thread routine */
void *thread(void *vargp) {
  sleep(1);
  printf("Hello, world!\n");
  return NULL;
}

私はそれを修正することになっています。私はすでにインクルードを追加しました:

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

しかし、それでも次のエラーが発生します。

/tmp/ccHwCS8c.o: In function `main':
1.c:(.text+0x29): undefined reference to `pthread_create'
collect2: ld returned output state 1

私は答えが言ったようにコンパイラで-lpthreadを追加しようとしましたが、それでもこのエラーコードが表示されます:

@lap:~$ gcc -Wall -lpthread 1.c -o uno

/tmp/ccl19SMr.o: In function `main':
1.c:(.text+0x29): undefined reference to `pthread_create'
collect2: ld returned exit state 1
4

3 に答える 3

3

コンパイル/リンクに「-lpthread」を追加します。

于 2012-12-09T17:17:31.493 に答える
2

-pthreadコンパイル中にオプションについて明示的に言及する必要があります。このリンカーがないと、pthreadライブラリの参照を見つけることができません。このようにしてください:

gcc -Wall -pthread test.c -o test.out

于 2012-12-09T17:20:45.917 に答える
2

-lpthreadを実行可能ファイルにリンクするには、フラグを付けてコンパイルする必要がありlibpthreadます。

また、メインスレッドが新しいスレッドの終了を待機できるようにするには、 pthread_join()関数を追加する必要があります。Hello World現在のコードでは、メインスレッドが終了するとすべての息子スレッドが終了するため、表示されません。

于 2012-12-09T17:53:05.537 に答える