1. ホーム
  2. gcc

[解決済み] gccの-lpthreadオプション

2022-02-17 18:12:23

質問

Linux環境でpthreadライブラリを使用する場合、pthread.hをインクルードし、-lpthreadオプションをつけてソースコードをコンパイルしなければならないことは承知しています。 しかし、なぜ-lpthreadオプションをつけてコンパイルしなければならないのかがわかりません。というのも、pthread.hをインクルードすることで、pthreadライブラリをリンクするように宣言しているからです。なぜ、gcc は pthread ライブラリを自動的にリンクしないのでしょうか?

よろしくお願いします。

どのように解決するのですか?

さて リンク コンパイル は、2つの別々のフェーズです。

ヘッダをインクルードします。 pthread.h コンパイラは、pthread ライブラリのヘッダファイルで定義/宣言されているデータ型とシンボル名を理解できるようにするためです。

pthread ライブラリへのリンクは -lpthread そうすれば、リンカはリンクの段階で実際に pthread ライブラリにあるそれらのシンボルを見つけることができます。