Building OCaml for Windows using Mingw/MSYS - エラーと対処方法
今回ビルドしてみて、発生したエラーと対応した内容を載せておきます。
'bash' が見つからない
- 現象
make -f Makefile.nt world 実行時に発生
'bash' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 Failure: Error while running: find "." > 'C:/DOCUME~1/foo/LOCALS~1/Temp\ocamlbuilde48da9out'. make: *** [ocamlbuild-partial-boot] Error 2
- 原因
boot/myocamlbuild.boot 内に bash が固定で定義されているため
- 対応
bash-3.1-MSYS-1.0.11-1.tar.bz2 を MSYS にインストール
gcc の引数が間違っている
- 現象
make -f Makefile.nt opt.opt で発生
gcc: @C:/DOCUME~1/foo/LOCALS~1/Temp\camlrespa41d71: Invalid argument Error during linking make: *** [ocamlc.opt] Error 2
- 原因
gcc に @ファイル名 という無効な引数を渡しているため
以下のところで、引数が 256 バイトを超える場合はコマンドラインの引数をファイルに落としている。
ocaml-3.10.2/utils/ccomp.ml
41 let quote_files lst = 42 let s = 43 String.concat " " 44 (List.map (fun f -> if f = "" then f else Filename.quote f) lst) in 45 if Sys.os_type = "Win32" && String.length s >= 256 46 then build_diversion lst 47 else s
- 対応
@ファイル名 を作成している ocaml-3.10.2/utils/ccomp.ml を修正する。
修正内容は手順を参照。