osiire’s blog

ふしぎなそふとやさん

ビルド難しい

  1. .cmaとか.cmxaとかのライブラリを作りたい。
  2. ライブラリ名でpackしたい。
  3. FFIC言語の.oファイルもある。

という状況のときに、どうするのが正解なのだろう?ocamlmklibでは-packオプションが使えない。omakeとか使えばできそうだけど、配布ライブラリがomakeを強要するのもなんだと思うし。私がやったのは、次の手順。

  1. -packオプションで単一の.cmo(もしくは.cmx)ファイルを作成。(.cmx達はあらかじめ-for-packオプションを付けてコンパイルしておく必要あり)。
    • ocamlc -pack [ライブラリ名] [リンクしたい.cmo達] -o [ライブラリ名].cmo
  2. 出来た.cmo(もしくは.cmx)ファイルを-aオプションでライブラリ化。
    • ocamlc -a [-cclibオプションとか] [ライブラリ名].cmo -o [ライブラリ名].cma
  3. ライブラリ化と同時に.aファイルも出来るので、手持ちの.oファイルをarで追加。
    • ar rcs [ライブラリ名.a] [リンクしたい.o]

自信なし。