2011-11-25 19 views
6

私のシステムにはubuntu 11がインストールされています。私はpthreadライブラリを使用するcプログラムを持っています。 フラグ-lpthreadでコンパイルしてもエラーUndefined reference to sem_wait()が表示されます。例えばgcc -lpthread not working

gcc -lpthread prog.c 

プログラムは、他のUbuntuのインストールで正常に動作します。

+1

pthread呼び出しで別のものをコンパイルできますか? – DanZimm

+1

リンクの順序は重要です。図書館は最後に来なければなりません。 –

答えて

12

試してみてください。

gcc -pthread 

の代わり-lpthread。違いは重要だと私は信じている。後者はlibpthreadとリンクしています。前者はlibpthreadと他の多くのものとリンクしています。

sem_waitはlibrtの一部ですので、gcc -lrtを使用することもできますが、-pthreadを使用してください(その他はすべて同様です)。

+0

ありがとう!これはうまく動作します。 –