Namazu-win32-users-ja(旧)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Namazu のコンパイルと日本語/英語



寺西です。

# 分かりやすいように、大雑把に説明しています。厳密には全然正しく
# ないので、鵜呑みしてはいけません。イメージだけ掴んでください。
# また、あえてそういう説明をしていますので、細かいツッコミはご容赦
# ください。と、前置きしておいて。

Yuichiro Sawatari wrote:
> 
> > まず、cygwin 版を作りたいのか、Win32 ネイティブ 版を作りたいのか
> > どちらでしょう。
> 
> 恥ずかしながら、cygwin 版と Win32 ネイティブ版の違いが分かっていません。

全然恥ずかしいことではないです。事情が複雑で分かりにくい話なんです。

Namazu はそもそも UNIX 用のソフトウェアで、これを Windows でも
使えるようにするためには、Windows で動く UNIX (という言い方をあえて
します。説明の便宜上。)でコンパイルするのが、簡単です。

Windows で動く UNIX、それが cygwin です。

Namazu を cygwin 環境でコンパイルすると、UNIX でコンパイルするのと
同じ感覚でコンパイルできます。出来上がった Namazu はもちろん Windows 
で動きます。

ただ、cygwin 環境でコンパイルしてできた実行ファイルは、cygwin1.dll 
が必要になります。この結果、
「アプリケーションの実行速度が遅くなることに加え、アプリケーションが 
GPL に従ったコンポーネントに依存するという事実は、 Cygwin の GCC で
ビルドされた全てのアプリケーションもまた GPL に従うことになるという
ことを意味するのです! 」となります。

まぁ、Namazu は GPL なので GPL になるのは良いのですが、実行には
cygwin 環境が必要ということになります。

一方、MinGW で生成されたアプリケーションは単独で Windows 上で
動作します。このため、GPL の縛りはありません。
VC++, Boland C++ でコンパイルして作成したバイナリと同じ感覚です。
こちらの方がよりスマートですね。

で、すこしややこしくなるのですが、MinGW は C コンパイラ、ヘッダ、
ライブラリなどの開発環境のみなので、これだけで UNIX プログラムを
コンパイルするのは大変です。GNU ツール群がないためです。
そこで、cygwin 環境で MinGW 形式のバイナリをコンパイルするという
方法が -mno-cygwin オプションです。
# 本来なら、cygwin 環境を使って、MinGW 形式のバイナリ(cygwin1.dll
# のいらない)が作れるのですが、どうも猿渡さんの環境ではうまく
# コンパイルできていないようですね。

で、更にややこしくなるのですが、MSYS (MinGW SYS) という GNU ツール
を集めたパッケージを使うと cygwin のような環境を MinGW の環境
で作れるのです。MSYS を使った MinGW 環境なら、もはや cygwin は必要
ないはずです。

# 正確ではないと思いますが、MSYS を含めて MinGW を指していることも
# あります。

というような感じになります。結局、
・cygwin 環境でコンパイル -> cygwin 版
・cygwin 環境で MinGW でコンパイル -> Win32 ネイティブ版
・MSYS 環境で MinGW でコンパイル -> Win32 ネイティブ版
ということになりますかね。

大体わかったところで、「cygwin」「MinGW」「MSYS」を調べてしっかり
理解しましょう。それらについての質問は、それぞれのコミュニティで
お聞きください。

> > 対処方法も書いてあるので、その通りに対処しましょう。
> 
> 過去ログ
> http://www.namazu.org/ml/namazu-win32-users-ja/msg01544.html
> で紹介されていた
> http://www.mingw.org/msys.shtml
> の Download から MinGW-3.1.0-1.exe をダウンロードしました。

Cygwin版 make か、MSYS 版 make を使うことと書いてありますが、ご理解
されていますか?
対処方法をしっかり読んで、その通りに対処しましょう。

> > そして、それは cygwin 版なので、MinGW 版なら /mingw/bin に gettext.exe
> > /mingw/lib に libintl.a 等が入っているでしょうか?
> 
> 上記 MinGW には、
> /mingw/bin/gettext.exe も /mingw/lib/libintl.a も入っていませんでした。

MSYS を入れると入りませんか?
ないなら MinGW で GNU gettext をインストールするという作業が必要に
なります。
-- 
=====================================================================
寺西 忠勝(TADAMASA TERANISHI)  yw3t-trns@xxxxxxxxxxxxxxx
http://www.asahi-net.or.jp/~yw3t-trns/index.htm
Key fingerprint =  474E 4D93 8E97 11F6 662D  8A42 17F5 52F4 10E7 D14E