2009-06-01 9 views
1

私はpthreadsを使用する代入のためにC++で書いたプログラムをコンパイルしようとしています。私はLinuxでEclipseを使用していますが、コンパイラの引数(g ++、gcc、リンカ)に "-lpthread"を追加しても、コンパイルに問題はありませんでした。しかし、私が実行してデバッグしようとしていたとき、Eclipseからエラーメッセージウィンドウ "Launch failed。Binary not found"が表示されました。pthreadsはコンパイルされますが、バイナリは作成されません。

gccとg ++で、-pthreadと-lpthreadという接尾辞を付けて手動でコンパイルしようとしましたが、その結果は "gcc:-pthread:No such file or directory"です。

よく分からないことは、問題なくコンパイルするだけで、exeを生成しないことです。 私は適切なものを得る必要があると信じています。

何かすればいいですか?

答えて

7

どのようにコンパイルしていますか?これはうまく動作するはずです:

gcc -o foo foo.c -lpthread

+0

GCC -pthread ./*.cpp -o Ex2.exe G ++ -pthread ./*.cpp -o Ex2.exe GCC -lpthread ./*.cpp -o Ex2.exe G ++ -lpthread ./ * .cpp -o Ex2.exe のどの作品でもありません。 – Nefzen

+2

@ Nefzen - pthreadの前に2つのダッシュを使用しないでください。ダッシュは1つだけです。 –

+1

1つのpthreadステートメントだけが必要で、最後に-lpthreadで十分です。 – ismail

3

g++ -pthread -ggdb -Wall -pedantic -o myexe *.cpp -lpthreadは動作するはずです。

+0

これは私に "void * Run (void *) 'の未定義の参照を返します。"というエラーはEclipseではまだエラーはないものの、まだバイナリを生成しません。 – Nefzen

+1

これは、リンカーがRun()関数のテンプレート展開を見つけることができないことを意味します。 –

+0

はい、テンプレートをヘッダーに移動しました。以前にそのテンプレートを選択したはずです。うーん、実行していますが、おそらく別のスレッドでcatchしていない例外が発生しています:\ – Nefzen

関連する問題