論理型言語のくせにexeが作れるMercuryを試みてみます。
だいぶ前から見つけつつも、Cygwin入れたく無いなあ、と躊躇していたMercuryです。 Cygwinを(他の目的のためですが)入れてしまったので、ついでにこれも挑戦しておきます。 いつものように、さわりだけやって飽きる可能性は大です。
最終リリース日時が、旬を過ぎてしまったみたいで寂しい上に、Googleの日本語のページからの検索ではio__write_stringすら0件…
MinGW版を落としてきました。
Cygwinのデフォルトインストールでは、必要なunzipとmakeが入りません。 同名のexeが既にHDDに入ってPATHが通ってたりしますが、Cygwinとは無関係なやつですので上手く動きません。 なので追加で入れてやります。
で、ダウンロードページに書かれていた方法で解凍して…
$ unzip -d / mercury-compiler-0.11.0.i686-pc-mingw.zip
色々パスが通って無いので、リンクを貼ります。 試行錯誤の結果、c2init, mercury_update_interface, mgnuc, mkinit, ml, mmake, mmcの計7つ、/bin/にリンクを貼れば、hello_world.mのコンパイルは出来ます。
まずこのサンプルをコンパイルしようと、ソースファイルhello.mを用意して、失敗。 中に書かれたモジュール名とファイル名を合わせないとだめな様です。 で、hello_world.mで…
シンボリックリンクはln -s 元 先
で作れます。
/usr/bin/に作ろうとしても/bin/に作られてしまいます。
(そういう風にマウントされているようです。Thanks to CyberX.)
で、環境変数もいろいろ試行錯誤して…
@echo off set CYGWIN=ntsec set HOME=/home/yt set MAKE_MODE=UNIX set SHELL=/bin/bash SET C_INCLUDE_PATH=C:\Progra~1\cygwin\usr\local\mercury-0.11.0-mingw\lib\mercury\inc;C:\Progra~1\Mingw32\include SET LIBRARY_PATH=C:\Progra~1\Cygwin;C:\Progra~1\Mingw32\lib ←こっちは無駄でした(T_T) C: chdir C:\progra~1\cygwin\bin bash --login -i
最後のリンクの段階で、Windowsネイティブ版MinGWのgccがCygwinパスを理解しないので、手動で。
C:\Program Files\cygwin\home\yt\mercury>gcc hello_world_init.o hello_world.o C:\ Progra~1\cygwin\usr\local\mercury-0.11.0-mingw\lib\mercury\lib\i686-pc-cygwin\li bgc.a C:\Progra~1\cygwin\usr\local\mercury-0.11.0-mingw\lib\mercury\lib\asm_fast .gc\i686-pc-cygwin\libmer_std.a C:\Progra~1\cygwin\usr\local\mercury-0.11.0-ming w\lib\mercury\lib\asm_fast.gc\i686-pc-cygwin\libmer_rt.a C:\Progra~1\cygwin\usr\ local\mercury-0.11.0-mingw\lib\mercury\lib\i686-pc-cygwin\libgc.a C:\Program Files\cygwin\home\yt\mercury>a Hello, World! C:\Program Files\cygwin\home\yt\mercury>
多分、Cygwin版MinGWならそのままいけるんでしょう。 既にAdaのためにネイティブ版gccを入れていたので、まあDLし直す必要は無いか、とか思ったのが間違いだったようです。
今日の総括。
Cygwinなんて嫌いだー!!
…を、インストールしました。 別にXのライブラリやWin32APIのヘッダーなんて要らないのに、インストーラのはずみで入れる事になってしまって、AirH"でたらたら10M近く落としました。 しかも、Win32ネイティブ版MinGWは既に入ってるというのに…激しく無駄な気分です。
結果、mmakeがばっちり動くようになりました。 でも出てきたhello_world.exeは2.6M…どうすればスマートリンクを指示できるのでしょうね?
2004-02-10 | 導入 |
2004-02-29 | Cygwin版MinGW版gcc |