質問: ### 前提・実現したいこと 目的 MinGWのg++でcppファイルのコンパイル 環境 windows10 MinGWの最新版のインストーラーを使い、 mingw32-base mingw32-gcc-g++ をインストール、パスはmingw/binに通しています。 mingwは5.3.0です。 ### 発生している問題・エラーメッセージ ``` >g++ test.cpp c:/mingw/bin/../lib/gcc/mingw32/5.3.0/../../../../mingw32/bin/ld.exe: cannot find -lpthread collect2.exe: error: ld returned 1 exit status ``` ### 該当のソースコード ``` #include int main() { std::cout << "Hello world!" << std::endl; return 0; } ``` ### 試したこと -o で出力するファイル名などのオプションを入れても同じエラーが出ます。 もちろんgccでもダメでした。 ちなみにソースはいくつかの入門サイトからいろいろなhello worldを拾ってきたためほかのパターン(でprintfなど)でも試していますが結果は同じでした。 ほかに試しようがないので調べた結果 * pthreadはPOSIX thread マルチスレッドプログラミングで必要 * -fopenmp というオプションをつけた場合にこのようなエラーが出る * 問題のpthreadはヘッダファイルもライブラリも存在しない あたりがわかりましたが対処法には至りませんでした。(そもそもマルチスレッドのプログラム関連の話題ばかりでした) ### 補足情報(言語/FW/ツール等のバージョンなど) gcc version 5.3.0 (GCC) (G++ -vとするとこれが出てきます) バッチファイルではなく普通のコマンドプロンプトを起動して特に環境変数も指定しているわけではありません。 pthreadはPOSIX環境で必要なもののようで、mingwはPOSIXではないようです。 そもそもコンパイルを最優先の目的としてpthreadを読み込ませようにもPC内にはないのでどこで入手するかの問題があり、 それと根本的な部分としてなぜ指定していないpthreadを読み込もうとしているかの問題があります。 ソースの通りとりあえずC++を触ってみようというレベルの人間なのでどなたかお知恵をお貸しください。
回答: こんにちは。 私はWindows 10上でMinGW 5.3.0も使ってますが、問題なく使えてます。マルチスレッドも使ったことあります。 MinGWはどこからダウンロードされてます? わたしはここのmingw-w64-install.exeでMinGWをインストールしてます。 デフォルトでThreadはPOSIXになっていてそのままインストールしてますので、libpthread.dll.aとlibpython2.7.dllも含まれていました。