トップ 検索 一覧 差分 ソース ヘルプ RSS ログイン

今更MinGW 2009.06(7) iconv,libxml2

今更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秒