OCamlでZ3パッケージを使ったビルドに失敗する

ocamlfind ocamlopt -o main -package z3 -linkpkg main.ml

のようなコマンドでビルドすると,undefined reference to ...のようなものが大量に出てビルドに失敗しました.

参考:

stackoverflow.com

環境

  • Ubuntu 18.04
  • OCaml 4.06.0 (defaultは4.05.0)
  • opam 2.0.0
  • Z3 4.8.4

原因

このバージョンのパッケージが壊れている. (そのうち直してくれると思います)

対策

  • Z3をダウングレード (4.7.1だと出なかった)

または

  • パッケージのMETAファイルを以下のように書き換える.

linkopts = "-cclib -L/usr/lib"の行を, linkopts = "-cclib -lstdc++"とする.

これでもう一度ocamlfind ocamlopt -o main -package z3 -linkpkg main.mlみたいにやったら成功しました.