だんだんわかってきた

ocamloptで.cmxaを作るときにCライブラリを使いたい場合は-cclibを使う。Objective Caml\lib以下にlibxxxx.libを置く。
ocamlcで.cmaを作るときにCライブラリを使いたい場合は-dllibを使う。Objective Caml\lib\stublibs以下にdllxxxx.dllを置く。.dllを作っていてシンボルcaml_local_rootsが見つからない場合はCソースを/DCAML_DLL付けてコンパイルし直す。
これだけで万事OKです。-customとかocamlmktopとか要らんです。.dll作って-dllibで指定しておけば対話環境からも#loadできますし。
しかし結局VisualC++版にしたのですが、clとlinkは楽でいいな。流石Microsoftのツールチェインだけあります。むしろldやdlltoolが狂気の沙汰なだけだと改めて……。
一応camlidl用の.defファイル置いときますね。これでdllcamlidl.dllを作れば対話環境からもCOMオブジェクトが使えるようになるはず。目的はあくまでGMPですので試しもしませんけれど。

LIBRARY dllcamlidl.dll
EXPORTS
    camlidl_com_initialize
    camlidl_com_uninitialize
    camlidl_com_queryInterface
    camlidl_com_combine
    camlidl_com_parse_uid
    camlidl_com_create_instance
    camlidl_com_register_factory
    camlidl_free

それにしても、google:ocamlc ocamlopt cclib dllibでマニュアルとMakefileしか出てこないといいますのに、皆さんあのマニュアルだけで何も疑問に思わずに使いこなせてるってことなんでしょうか……。流石OCamlやるような人達は私とは違う。