プロが教える店舗&オフィスのセキュリティ対策術

WindowsにminGWをインストールしてopenMPのC++ソースtest.cppを
"g++ -fopenmp -O2 test.cpp"
でコンパイルしようとしましたが、"cannot find -lpthread"とメッセージが表示されてエラーとなります。どうしたらコンパイルが通るでしょうか?
同じソースを
"g++ test.cpp"
でコンパイルすると通って、実行も正常に行われます。
また同じソースをVisual Studioやiccで行うとopenMP並列化のコンパイルはちゃんと通ります。
ご教授よろしくお願いします。

A 回答 (2件)

以下はg++のMANページの抜粋です。


-fopenmp
Enable handling of OpenMP directives "#pragma omp" in C/C++ and "!$omp" in Fortran. When -fopenmp is specified, the compiler generates parallel code according to the OpenMP Application Program Interface v3.0 "<http://www.openmp.org/>". This option implies -pthread, and thus is only supported on targets that have support for -pthread.
つまり、OpenMP API3.0に準拠したコードを自動生成するけど、pthread(POSIX Thread)が暗黙の内に使われるからpthreadライブラリをリンクしてね。OpenMP API3.0に準拠した「パラレルコード」が必要なら-fopenmpをつけてさらに-lpthreadも必要ということです。そうでないなら、このオプションは要らないです。
    • good
    • 0

「libpthread が見つからん」って言ってるんだから, 見つかるようにすればいい (はず).

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!