###前提・実現したいこと
目的 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 <iostream> int main() { std::cout << "Hello world!" << std::endl; return 0; }
###試したこと
-o で出力するファイル名などのオプションを入れても同じエラーが出ます。
もちろんgccでもダメでした。
ちなみにソースはいくつかの入門サイトからいろいろなhello worldを拾ってきたためほかのパターン(<cstdio>でprintfなど)でも試していますが結果は同じでした。
ほかに試しようがないので調べた結果
- pthreadはPOSIX thread マルチスレッドプログラミングで必要
- -fopenmp というオプションをつけた場合にこのようなエラーが出る
- 問題のpthreadはヘッダファイルもライブラリも存在しない
あたりがわかりましたが対処法には至りませんでした。(そもそもマルチスレッドのプログラム関連の話題ばかりでした)
###補足情報(言語/FW/ツール等のバージョンなど)
gcc version 5.3.0 (GCC)
(G++ -vとするとこれが出てきます)
バッチファイルではなく普通のコマンドプロンプトを起動して特に環境変数も指定しているわけではありません。
pthreadはPOSIX環境で必要なもののようで、mingwはPOSIXではないようです。
そもそもコンパイルを最優先の目的としてpthreadを読み込ませようにもPC内にはないのでどこで入手するかの問題があり、
それと根本的な部分としてなぜ指定していないpthreadを読み込もうとしているかの問題があります。
ソースの通りとりあえずC++を触ってみようというレベルの人間なのでどなたかお知恵をお貸しください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/09/02 15:21
2016/09/02 15:38