今更MinGW 2009.06(7) iconv,libxml2
iconvとlibxml2は非常に裏方的なライブラリだ。iconvは文字セットの変換を行うライブラリで、libxml2はXMLを操作するライブラリになる。これらを使用しているソフトウェアを利用していても、その存在を意識しないことは多いだろう。
iconvはmingwPORTにもあるが、執筆時点では1.11と最新の1.13より古いため、オリジナルからビルドする。
iconvのcp932パッチ
Windows上で使用するに当たって、よりWindowsアプリらしい動作にするためのパッチを導入する。WindowsのOSレベルでは、マイクロソフト的Shift_JISであるcp932とUnicode間の変換において、標準的なマッピングとは異なるマッピングを使用している。このパッチは、本来iconvが標準的なマッピングを使用するところを、Windowsの変換と同じマッピングを使用するように変更するものだ。
これを適用しない場合、iconvを使用するソフトウェアを作成すると、本来意図する文字とは別の文字が使用され、様々な不具合を発生する可能性がある。特にファイル名の変換を行う場合、存在するはずのファイルが発見できないといった、通常想定しないエラーになり、頭を悩ませることになる。一見似た文字にマッピングされるあたり、なおのこと気づきにくいバグになるだろう。
Windowsのマッピングが正しいわけではないだろうが、正しいマッピングを使用することでMinGWで作成するソフトウェアが動作しないようでは困るので、猫科研究所ではパッチを適用することをお勧めする。
ソースの入手
いずれも/srcに展開しよう。
パッケージの説明
上記で説明しているので省略する。
ビルド
libiconv
パッチを当てる以外は特別な点はない。
pushd /src/libiconv-1.13 patch -p1 -N < ../libiconv-1.13-ja-1.patch ./configure --prefix=/mingw --enable-static --disable-shared make make install
--enable-staticはstaticライブラリを作成する指定で、--disable-sharedは.DLL版のライブラリを作成させないオプションだ。猫科研究所ではstaticライブラリを推しているため、頻出のオプションである。
libxml2
いくつかオプションを指定する以外は特別な点はない。
pushd libxml2-2.7.3 ./configure --prefix=$flinstpath --enable-static --disable-shared \ --without-debug --without-legacy --without-modules make make install
configureの行は若干長いので\で改行してる点に注意。--without-debug --without-legacy --without-modulesは一般的とは限らないオプションで、libxml2固有と思った方がよい。それぞれデバッグ不要、旧インターフェース不要、dynamicモジュール不使用の指定である。
なお、libxml2はpthreadが存在すると自動的にpthreadを使用するマルチスレッド版をビルド・インストールしようとする。pthreadは様々な注意が必要なので、猫科研究所では推奨しない。GCCにTDM版を使用している場合、注意が必要だ。
最終更新時間:2009年06月25日 19時52分59秒