2013-5-19[日] optlink のコンパイル

仕事が一段落したので放置していた諸々に手をつけねば、だけど、忙しい最中の現実逃避の残滓を先に…とグダグダ。現実逃避で dmc や ow で遊んでたのですが、dmc ってc++としてはowよりよさげだけどリンク時にハングしたり-gでデバッグ付でまともに動かせなかったりと optlink がかなりネック。交代のリンカ探すもデバッグ機能対応してるやつなんてそうそうなく…で灯台下暗し。optlink 自体がオープンソース化されてたようで dm856c よりも新しいソースがコミットされてた。コンパイルして使うとハングとか -g の具合が改善されてる模様。(といっても -g付きでちょっと大きいリンクすると Error 168: >64K Global Types の刑なのは変わりませんが)

とりあえず、コンパイルメモ
  https://github.com/DigitalMars/optlink
より ソースを入手 (己はzipをダウンロード). また
  http://www.robpol86.com/index.php/ImageCFG
より imagecfg.exe というツールをダウンロード。

 コンパイルには dmc と vc(9) が必要。(express版 でいけるかは未確認)。 vc の nmake と ml(マクロアセンブラ) あたりを使っているよう。
 dmc は必ず ドライブのルートに
    \dm
としてインストールされていること.( \dm にインストールしていない場合は、 別途インストールするか、win7以降ならば mklink /d \dm \hoge\hage\dm 等でリンクするなりして)

dmcとvcのパスを通し(vcvars32.bat 実行後 set path=x:\dm\bin;%path% をするなり)、 imagecfg.exe をパスの通ったところに置いておく.(不精して dm\bin に掘り込んだ)

ダウンロードしたzip を \dm があるドライブの適当なフォルダに解凍。 (gitで取得のほうが普通か?). 一応 開発者と同じ状態にするならば
   \cbx
というフォルダを用意してそこに展開.

その中の
   build_optlink.bat
を実行(他のバッチは気にしない)、コンパイルに成功していれば
   optlinkc\os2link\objnt\link.exe

ができているので、dm\bin に上書きコピー。


追記 dmd 2.063 (及びそれに対応するdmc.zip)付属のlink.exeは2013/04 の修正が反映されたバージョンになったようで、わざわざコンパイルしなくてもよくなった。