2013-08-09

libxml2のWindowsビルド手順  [by miyachi]

久しぶりのプログラミングネタです。現在リリースしているLE:PAdES:LibのWindows64bit版が必要になりプロジェクトをリビルド…しようと思ったのですが使っているオープンソース系プロジェクトの幾つかでWindows64bit版のバイナリが無いものがありました。XML操作ライブラリであるlibxml2もその1つです。仕方が無いのでソースからビルドする事にしました。ついでにlibxml2が依存していたiconvも不要なので切り離すことにしました。

● ビルド手順

まず以下より libxml2-2.7.8.zip をダウンロードします。
https://git.gnome.org/browse/libxml2/

次にスタートメニューよりVisualStudio2005のコマンドプロンプトを開きます。[Microsoft Visual Studio 2005] -> [Visual Studio Tools] の下にあります。VisualStudio2010等でも同じです。

 32bitビルド時: [Visual Studio 2005 コマンドプロンプト]
 64bitビルド時: [Visual Studio 2005 x64 Win64 コマンドプロンプト]

どちらでコマンドプロンプトを開くかで 32bit と 64bit の切り替えが可能です。便利ですね(^^;
次に展開したフォルダ下のwin32フォルダの下に移動します。

> cd libxml2-2.7.8/win32

ConfigureによりMakefileを生成します。この時に iconv はオフにします。iconvをオフにしてもUTF-8は利用可能です。

> cscript configure.js compiler=msvc iconv=no debug=no cruntime=/MD vcmanifest=yes

ちなみにデバッグ時は debug=yes cruntime=/MDd とします。
次に生成された Makefile を修正します。修正しないとエラーでビルドできません。これはConfigureのバグとのことです。

-----(修正前)---------------------------
+!if "$(WITH_ICU)" == "1"
+LIBS = $(LIBS) icu.lib
+!endif
-----(修正後)---------------------------
!if "$(WITH_ICU)" == "1"
LIBS = $(LIBS) icu.lib
!endif
----------------------------------------

次に 64bit用に win32 をコピーした win32_64 フォルダを作成しておきます。そしてビルドします。この時32bit用のコマンドプロンプトで開いているとします。

 > nmake /f makefile

・以下エラーが出ますがテストコマンドのビルド中なので無視しました。

----------------------------------------
(前略)
..\testapi.c(294) : error C2001: 定数が 2 行目に続いています。
..\testapi.c(295) : error C2143: 構文エラー : ')' が 'return' の前にありません。

NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 8\VC\BIN\amd64\cl.exe"' : リターン コード '0x2'
Stop.
----------------------------------------

32bit用のコマンドプロンプトを終了して64bit用のコマンドプロンプトで win32_64 フォルダの下に移動して同様にビルドします。これで win32/win32_64 の下に bin.msvc の下にdll/libが生成されます。

これでiconvに依存せず32/64bit両方に対応したlibxml2のVisualStudioビルド版の完成です。私の使っている分では特に問題も無く使えています。なおzlibは別途必要です。zlibのWindows 32/64bit版のDLLバイナリはここにあります。以上参考になれば幸いです。
2013-08-09 11:36:29 - miyachi - [プログラミング] -

コメント一覧

コメント無し

コメントを書く

このアイテムは閲覧専用です。コメントの投稿、投票はできません。