RealPath:
WebPath:
2017/02/12 02:24 (JST) 更新
MinGW64 on MSYS >>

libxml2

Contents

概要

msys のパッケージとして msys-libxml2 というものがあるが、これだと mingw64 のプログラムとうまくリンクできないっぽい。
libxml2 をソースコードからインストールすることで mingw64 からもうまくリンクできるようになる。

パッケージ入手

ビルド・インストール

bash
$ tar xzvf libxml2-sources-2.9.2.tar.gz
$ cd libxml2-2.9.2
$ ./configure --prefix=/usr/local --enable-shared=false --enable-static=true
$ make
$ make install

インストール確認

$ ls -ltr /usr/local/lib
....
-rw-r--r-- 1 kobake Administrators     879 Feb  6 06:36 libxml2.la
-rw-r--r-- 1 kobake Administrators 6989588 Feb  6 06:36 libxml2.a
-rw-r--r-- 1 kobake Administrators     207 Feb  6 06:36 xml2Conf.sh
drwxr-xr-x 3 kobake Administrators       0 Feb  6 06:36 cmake
drwxr-xr-x 2 kobake Administrators       0 Feb  6 06:36 pkgconfig

$ ls -ltr /usr/local/lib/cmake
...
drwxr-xr-x 2 kobake Administrators 0 Feb  6 06:36 libxml2

$ ls -ltr /usr/local/lib/pkgconfig
...
-rw-r--r-- 1 kobake Administrators 289 Feb  6 06:36 libxml-2.0.pc

エラー対策「undefined reference to `__imp_xmlFree'」

引数無しで configure すると以下のようなエラーが出ることがある。

xmllint.o: In function `xmllintExternalEntityLoader':
C:\MinGW\msys\home\kobake\libxml2-2.9.2/xmllint.c:326: undefined reference to `__imp_xmlFree'
C:\MinGW\msys\home\kobake\libxml2-2.9.2/xmllint.c:323: undefined reference to `__imp_xmlFree'

対症療法ではあるが configure 引数に --enable-shared=false --enable-static=true を指定することで回避が可能。