澤口さん まつぞの です。お返事が遅れてすみません。 # 本件に関するドキュメントが会社にしかなかったので遅れました<_o_> Sawaguchi Yuji <issho@xxxxxxxxxxxxxxxxx> wrote: > 澤口@一升金です。 > > 松園 敬二さんの<200502210248.ADF37224@xxxxxxxxxxxxxxxxxxxx>から > >Cygwin を普通にインストールすると、レジストリを書き換えます。 > といっても > c:\cygwin -> / > c:\cygwin\bin -> /usr/bin > c:\cygwin\lib -> /usr/lib > くらいの定義しかしてませんよ。 おっしゃるとおりです。しかし、私の利用の仕方ではそれでも問題が 起きました。状況を説明します。 c:\cygwin\bin # x86用cygwinディレクトリ | |-- cygwin1.dll | gcc.exe | ld.exe | as.exe | \cross\H8\bin # H8 用cygwinディレクトリ |-- cygwin1.dll h8300-hms-gcc.exe h8300-hms-g++.exe h8300-hms-ld.exe もともと x86 用に cygwin を入れているような環境で、 H8用の環境を後からインストールしました。x86用とH8用で cygwin のバージョンは異なっていました。 H8用のMakefile を書いて make.exe(x86用)を利用したとき、 "cygwin1.dll のバージョンが違う"という趣旨のエラーが起きました。 調べてみると、make.exe のバイナリに "/bin/sh", "/bin/sh.exe" と いうように、フルパスで sh の位置を指定してありました。 cygwin の場合、マウントポイントの情報はレジストリにかかれています。 レジストリのマウントポイントを x86 用にしておくと、H8 用の実行ファイルで 動かないものが出てきます。逆のパターンも然りです。 最初は「きっとパスを切り替えれば直る」と思い、バッチファイルで 環境変数のパスを切り替えてテストしました。が、エラーが取れないので レジストリなどいろいろ調べたところ、上記のような結論に至りました。 とはいえ、実は、「バージョンが違う cygwin を2ついれてエラーが出てない」 というような事例もあり、完全に原因解明できているわけではありません。 # ユーザが違えばよいのか?と思いましたがそうでもないようです 私の場合は、上記のところまでで原因の追求を諦め、クロス(H8)用の環境を MinGW にする、という対処にしました。 > >どなたか良い解決法をご存知ならば、伺いたいところです。 > よい解決策かどうかは分かりませんが、cygwin環境はいくつ > でも別ディレクトリを作れますから、 > 1プロジェクト1ディレクトリとして cygwin1.dll もそれぞ > れ別々に置いてしまうのが早いんじゃないでしょうか。 > プロジェクトの保存や移管は tarball を作って渡すだけとな > って簡単かも知れない。 前述のとおり、複数の cygwin1.dll がある場合、アプリケーション(make, bash, ar, gcc などなど)に「どの cygwin1.dll を使うか」を どうやって指示すればよいかわからないのです。 # パスではなくレジストリ(のマウントポイント)と、***.exe に # 埋め込まれている絶対パスを使って cygwin1.dll を探している気配(未確認) 結論がすっきりしていなくてすみません。<_o_> -- # メールアドレス変わりました! e-mail: matsuzono_keiji@xxxxxxxxxxxxx OGIS-RI CO., LTD.(http://www.ogis-ri.co.jp/otc/) tel : 03-5440-4391 fax : 03-5440-4506