c++で作られたfastTextをWindows環境でコンパイルしようとしたらmakeでこけてはまった話
(fastTextは結果的にあんまり関係ないです。C++コンパイラの話です)
WindowsでC++のソースをコンパイルしたい
c++で作られたfastTextというものを使いたかったのですが、gitにソースしか落ちてなかったのでコンパイルする必要がありました。
そこでGitをインストールしたときになんか入ってた(Git Bash)MinGWを使えばいけるんじゃね?と思い、Windows(Bash on Windows)でfastTextを使うを参考に進めてみました。(Bash on Windowsっつってんだろというツッコミはスルーで)
はまった経緯
とりあえずgitでDLしてmakeするのね、g++いるのねってことがわかりました。
ここでg++のDLにはMinGWを正規ルートでインストールしてパッケージ管理画面からg++を追加してインストールする必要があるらしいのでインストールして追加。
ここでmakeとg++はコマンドがきくようになりました。
ということでfastTextをDLしてコンパイルじゃー!
$ git clone https://github.com/facebookresearch/fastText.git
$ cd fastText
$ make
と思ったらエラーでた。。。。
'thread' is not a member of 'std'
えーなんで???
と思いましたが、どうやらいろいろと調べた結果、MinGWさんはg++をいれてもPthreadが入っていないからできないんだとかなんとか。。むむむ(POSIX のスレッド(pthread)をサポートしてないんだとか)
いろいろ調べてMinGW用のPthreadをDLして配置してみてもうまくいかず、、時間切れでした。
解決策
悔しすぎるので帰ってから家のPC(Win)で再チャレンジすることに。
ここでMinGWを使うのをやめました。
そもそもc++の新しいバージョンに対応してなさそうだったので…。。。ちーん
気を取り直して、Pthreadとかも対応しているCygwinを使うことに。
Cygwinを公式からインストールし、
以下のパッケージ(Devel下)をDLしました(下の方は適当に選んだので不要だったかも)
- make
- gcc-g++
-
cygwin32-gcc-core(いらなかった) -
cygwin32-gcc-g++(いらなかった) -
mingw64-x86_64-pthreads(いらなかった) -
mingw64-x86_64-winpthreads(いらなかった)
とりあえずこれでcygwin上でmakeが通ることを確認!!やったー
あー疲れた。。。
(追記)
Cygwin以外にもmsys2でもできるようです。本当はこっちのほうがいいのかも