閉じる

iconv 1.9.2 for windows

libiconv-1.9.2.tar.gzに CP932と EUCJP-MS対応パッチ(libiconv-1.9.2-cp932.patch.gz)を当てて、Windows環境でバイナリを作る。
tar.gzの展開とパッチ当てはまぁ適当に。

Linux環境だと configureでやるであろう環境設定をパッチで済ます。*1
libiconv-1.9.2-cp932.win32.patch
内容的にはハードコートされている「ENABLE_RELOCATABLE=1」を「ENABLE_RELOCATABLE=0」に書き換えるのがメインで、気休めに最適化オプションを「O1」から「Ox」に。*2

後は VS2005のコマンドプロンプトから nmakeを実行すれば lib/iconv.libと lib/iconv.dllができあがる。

nmake -f Makefile.msvc -D DLL=1 -D MFLAGS=-MT -D NO_NLS=1

マクロのの意味は以下の通り

  • DLL: 1で DLL作成を指示
  • MFLAGS: -MTでランタイムライブラリのタイプを「マルチスレッドスタティックリンク」に
  • NO_NLS: 1で Native Language Supportを使わないように。これを指定しないと libintlやら gettextやらを見に行って面倒なことに。

2012/02/09追記

x64版も作るようにしたのでメモ。
と言っても特別なことはしていなく、以下のようなバッチを組んだだけ。

1995-1.bat
call "C:\Program Files\Microsoft Visual Studio 8\VC\vcvarsall.bat" x86
nmake -f Makefile.msvc -D DLL=1 -D MFLAGS=-MT -D NO_NLS=1 PREFIX=x86 clean
nmake -f Makefile.msvc -D DLL=1 -D MFLAGS=-MT -D NO_NLS=1 PREFIX=x86
nmake -f Makefile.msvc -D DLL=1 -D MFLAGS=-MT -D NO_NLS=1 PREFIX=x86 install

call "C:\Program Files\Microsoft Visual Studio 8\VC\vcvarsall.bat" x86_amd64
nmake -f Makefile.msvc -D DLL=1 -D MFLAGS=-MT -D NO_NLS=1 PREFIX=x64 clean
nmake -f Makefile.msvc -D DLL=1 -D MFLAGS=-MT -D NO_NLS=1 PREFIX=x64
nmake -f Makefile.msvc -D DLL=1 -D MFLAGS=-MT -D NO_NLS=1 PREFIX=x64 install

これで lib/x86と lib/x64にそれぞれ 32bit版と 64bit版のインポートライブラリと .dllができあがる。
ついでに x64/include,x86/includeに iconv.hも。

2014/09/10追記

2011年に 1.14が登場しているのに 2004年の 1.9.2を対象としているのは 1.12以降のバージョンは mingwでのビルド前提で nmakeをサポートしていないため。


*1 恐らく cp932.patchを適用しない生の 1.9.2にも当たるとは思う。

*2 patchコマンドがない環境なら全ての Makefile.msvcについてエディタで置換すれば済む。

コメントを残す

メールアドレスが公開されることはありません。必須項目には印がついています *

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)