2017-02-03 10 views
0

g ++を使用して単純なpthreadingコードをコンパイルしようとしました。pthreadコードをコンパイルするときの-lpthreadと-pthreadオプション

私の知る限りでは、-lpthreadを使用する必要がありますが、実行可能ファイルを作成することはできません。

は、以下のエラーコード(それのlibpthreadをリンクしないようです)です:

undefined reference to `pthread_create' 

私はオプション-pthreadでコンパイルするときしかし、興味深いことに、それは正しくコンパイルされ、完全にうまく機能します。

My g ++バージョンはgccバージョン5.2.1 20151010(Ubuntu 5.2.1-22ubuntu2)です。

答えて

0

-lオプションは、コンパイラが指定したライブラリとプログラムをリンクすることを示します。したがって、-lpthreadは、pthreadライブラリをリンクすることを意味します。
-pthreadは、gccの スレッドプログラムをビルドするために必要なオプションです。利用可能であれば
-pthreadが好ましい。

+0

私はgcc/g ++がソースコードを-lpthreadオプションでコンパイルすることはできませんが、興味深いことに-pthreadオプションで動作することをお伝えしたいと思います。なぜなのかご存知ですか? また、私は2つのオプションを一緒に使用すると動作します.. –

+0

完全なコンパイルコマンドを表示できますか? – jfly

+0

このフラグをMakefileに追加しました。 CPPFLAGS = -g -pthread -lpthread -std = C++ 11 -O0 –