2009年10月13日火曜日

Mingw on USBメモリ

先日買ったASUS EeePC 901でWindowsアプリ開発環境を作りたくなったので、Mingw(http://www.mingw.org/)を導入しようと思う。

でも、知っての通りEeePCのHDDは、4GB+8GBしかないので、ここに乗せるのはちょっとイヤ。

外部のUSBメモリ(8GB)に乗っけて、必要な時だけ使えるようにするのが今回の目的。


【必要なもの】
USBメモリ: 1GB以上あれば文句ないでしょう。SDカードでも可。(ただし、めっちゃレスポンスが下がると思う)


【手順】
本家(http://www.mingw.org/)に英語で詳しく書かれていますので、英語の得意な方はそちらを参照した方が微妙なニュアンスが伝わるかと。(その微妙なニュアンスがわからないので、自分流の邦訳を作った次第です。)

Mingwは、それだけだとコンパイラ関係だけしかインストールされないけど、MSYSを入れておくとUNIXのようなコマンドとオペレーション環境(シェルなど)を使えるようになりますゾ。


本来ならば、MSYS Ver 1.0.11のシステムをデーンと入れたいところだが、現状のMSYSはMSYS Ver 1.0.10のインストーラしかないようなので、いったんMSYS Ver 1.0.10をインストーラでインストールして、その後でMSYS Ver 1.0.11のパッケージ類を上書きする形でシステムを構成するっちゅうことらしい。(英語が苦手なんだわぁ。。。回りくどい表現は止めて欲しいね。)

1. MSYSをインストールする。
1.1 MSYS-1.0.10の基本システムをC:\msys\1.0\にインストールする。
(1) http://downloads.sourceforge.net/mingw/MSYS-1.0.10.exeをダウンロードする。
(2) ダウンロードしたexeファイルを実行する。
(3) 案内を読んで、適当に答えて。
(4) 最後にポストインストール(DOSプロンプト窓)でMingwがインストールされたディレクトリパス名称を要求される。
このバッチ処理でやってることは、msysの/etc/fstabファイルに/Mingwのマウントポイントを設定しているだけらしいから、適当に入れても後で修正することができる。
通常は、"C:/mingw"みたいに答えるんだってさ。

1.2 MSYS-1.0.10の拡張パッケージをC:\msys\1.0\にインストールする。
(1) http://downloads.sourceforge.net/mingw/msysDTK-1.0.1.exeをダウンロードする
(2) ダウンロードしたexeファイルを実行する。
(3) 案内を読んで、適当に答えて、ちょいちょいちょいっと。

1.3 ここで、インストールしたC:\msys\の全てをUSBメモリにコピーする。
ドラッグ&ドロップでやっちゃって良いでしょう。

1.4 MSYS-1.0.11の基本システムを上書きする。
(1) http://downloads.sourceforge.net/mingw/msysCORE-1.0.11-2007.01.19-1.tar.bz2
(2) ダウンロードしたbz2ファイルをUSBメモリ上に展開する。
(3) 解凍するのに使うツールは、lhaplusでも7zipでも何でもいいんじゃない。

1.5 推奨する更新(Recommended updates for MSYS)だそうで、MSYS Base System1.0.11にアップデートをかける。
(1) bash(http://downloads.sourceforge.net/mingw/bash-3.1-MSYS-1.0.11-1.tar.bz2)をダウンロードする
(2) coreutils(http://downloads.sourceforge.net/mingw/coreutils-5.97-MSYS-1.0.11-snapshot.tar.bz2)をダウンロードする
(3) m4(http://downloads.sourceforge.net/mingw/m4-1.4.7-MSYS.tar.bz2)をダウンロードする
(4) こいつらを全部展開してUSBメモリ上に上書きする。

2. Mingwをインストールする。
まぁ、本家では色々書いてあるけど、ここは適当に自動インストーラで入れちゃう。

(1) MingW自動インストーラ(http://downloads.sourceforge.net/mingw/MinGW-5.1.4.exe)をダウンロードする。

私は、gcc使ってjavaとかadaで開発するつもりが無いので、入れませんでした。

あと、mingwをインストールするフォルダは、仮に"C:\Mingw"とします。


(2) んで、インストールしたmingwをUSBメモリにコピーします。

必要なのはUSBドライブ上のmsys & Mingwだけなんで、CドライブにインストールしたmsysとMingwはアンインストールしても良いです。

取り敢えず、これでUSBメモリ上のmsys & Mingwが動作するようになっています。
USBメモリ上のmsys/1.0の下のmsys.batを起動して見てください。
rxvtコンソール画面が出れば問題なしです。

1.1 MSYS DTK(拡張パッケージ)でインストールする自動化ツール群はDLL作成がうまくできないらしいので、GNUサイトからソースをもらってきてリコンパイルしちゃうのが良いのだとか。

(1) GNUのFTPサーバから下記のソースの最新バージョンをダウンロードしてくる。
autoconf(http://ftp.gnu.org/gnu/autoconf/)
automake(http://ftp.gnu.org/gnu/automake/)
libtool(http://ftp.gnu.org/gnu/libtool/)

(2) autoconf,automake,libtoolの各々に対して、リコンパイル&インストールする。
rxvtコンソール画面を呼び出して、以下のオペレーションを行う。
# ./configure --prefix=/mingw
# make
# make install


3. 設定を調整する。
個人的には、必須でも無さそうな気がするけど、「ダメじゃん!」って相手にされなかったらイヤなので、言われた通りに設定しておきました。

(1) /mingwに全てのライブラリをインストールするつもりならば、PKG_CONFIG_PATHを設定する必要があります。
また、任意でCVSリポジトリが欲しいのであれば、CVS_RSHも設定する必要があります。
/etc/profileに対して、以下のような修正を加える。
PKG_CONFIG_PATH="/mingw/lib/pkgconfig"
CVS_RSH=ssh

(2) さらに、MingwにおけるCFLAGSの指定は、以下のようにしておくと良いらしい。
CFLAGS="-pipe -O2 -mms-bitfields -march=i686"


(3) んで、環境変数に設定した内容を、ネスティングした子プロセスでも利用できるようにエクスポートする。
export HOME LOGNAME MSYSTEM HISTFILE CFLAGS PKG_CONFIG_PATH CVS_RSH


msysdvlpr(MSYSシステムビルダ)での衝突を避けるため、パッケージインストールは/usr/localではなく、/mingwとする方が良いらしい。
# msys-DVLPRは、独自のmsysを構築&パッケージ化(リリースビルド)するためのシステムだったと記憶しています。
# msysを利用するだけなら必要ないです。

3.1 USBメモリからmsysを起動するバッチファイルを作る。
/msys/1.0/msys.batで直接起動しても良いんだけど、USBメモリは挿した時以前と同じドライブ名になるか保障は無いので、変わっちゃったときのために、それを変更してくれる処理があると嬉しいと思いませんか。

(1) /msys/1.0/etc/fstab.modelを新規に作って、以下のような内容を書く。
X:/win32/MinGW /mingw
X:/ /mnt/disk


(2) /msyskick.batを作って、以下のような内容を書く。
@echo off

::Get the current batch file's short path
for %%x in (%0) do set BP=%%~dpsx
for %%x in (%BatchPath%) do set BP=%%~dpsx
set BatchPath=%BatchPath%msys\1.0\
::echo BatchPath = %BP%


::Change to the batch file's directory
cd %BatchPath%

::Test if "msys.bat" is there.
if not exist %BatchPath%msys.bat goto ERROR
echo #Automatically generated - modify fstab.model > etc\fstab
::replace fstab with current directory
for /F "eol=# tokens=1,2* delims=:" %%i in (etc\fstab.model) do \
@echo %~d0%%j >> etc\fstab

::launch msys.bat
rem call msys.bat -norxvt
call msys.bat

goto DONE

:ERROR
echo msys.bat not found
goto DONE

:DONE


これで、USBメモリ上のWindowsアプリ開発環境のでっきあがり~です。


【出典】
Mingw本家(英語): http://www.mingw.org/
Mingwプロジェクト(英語): http://sourceforge.net/projects/mingw/
MSYSインストール手順(英語): http://www.mingw.org/wiki/MSYS
msys on flash drive(英語): http://sourceforge.net/mailarchive/forum.php?thread_name=81bfc67a0810081156w4965c3a0lbbcd5e64f09de0c3%40mail.gmail.com&forum_name=mingw-msys

0 件のコメント:

コメントを投稿