このページの情報は古くなっています。ここにある情報でなければならない特別な理由がなければこちらをご覧ください。MinGW Cross Compile on Ubuntu

Gentoo coLinux で MinGW クロスコンパイル >> GIMPクロスコンパイルへの茨の道 >> MinGW 環境の整備 >> ソースからインストール

ソースからインストール


バイナリが用意されてなかったり、バージョンが古かったり、障害があったり、さまざまな理由で自前でコンパイルしなければならない場合があります。

基本的なコンパイルとインストール手順


tar や unzip でソースアーカイブを作成し、その下に build 、 target サブディレクトリを作成し作業します。作業が終わると解凍ディレクトリごと削除します。

個々の説明では記述を簡略にするため、決まりきった作業の説明は省略しています。

作業は ${XBUILD} で行います。他の場所で作業する場合は適宜読み替えてください。
cd ${XBUILD}

ソース アーカイブを解凍します。アーカイブ名は ${SRC} であらわします。アーカイブの種類によって解凍方法が異なります。
# tar.gz
tar -zxf ${SRC}
# tar.bz2 もしくは tbz
tar -jxf ${SRC}
# zip
unzip ${SRC}

解凍して出来たディレクトリにカレントを移します。

コンパイルおよびインストール用ディレクトリを作成します。
mkdir target
mkdir build

build ディレクトリにカレントを移します。
cd build

configure する前、念のため --help で configure オプション情報を確認してください。
${XMINGW}cross-ppconfigure --help

configure します。
${XMINGW}cross-ppconfigure --prefix=`pwd`../target

直接インストールするなら --prefix=${XLOCAL} でもかまいません。他の、たとえば ${XLOCAL}/gimp にまとめてもいいです。ただしその場合は CFLAGS, CXXFLAGS, LDFLAGS 等に適宜オプションを渡してください。 configure がヘッダ/ライブラリを見つけられない場合も同様です。

configure で --enable-shared を指定しても shared ライブラリを作成できない場合があります。詳しくは雑多な疑問と不正確な回答の「 shared ライブラリを作成できない」を参照してください。

make します。必要があれば CFLAGS などにオプションを指定し実行します。指定すべき変数やオプションは Makefile の内容を考慮してください。
${XMINGW}cross make >make.log 2>&1

make.log にエラーが記録されてなければ正しくコンパイルされてます。

インストールします。インストール先は configure --prefix で指定したアドレスになります。 make prefix=<dir> で configure で指定したアドレスとは異なる場所にインストールできる場合があります。強引に他の場所に換える場合の障害は雑多な疑問と不正確な回答をご覧ください。
${XMINGW}cross make install >install.log 2>&1

install.log にエラーが記録されてなければ正しくインストールされてます。

target にインストールした場合、サブディレクトリの内容を確認し、ランタイムと開発用ライブラリに分けてアーカイバでまとめます。ツール類があれば、これもまとめます。
cd ../target
tar -jcf library-#.#.#-bin.tar.bz2 ...
tar -jcf library-dev-#.#.#.tar.bz2 ...
tar -jcf library-#.#.#-tools.tar.bz2 ...

library および ... の部分は適宜読み替えてください。

アーカイブは ${XGMPDEV} などに移動してください。
mv *.bz2 ${XGMPDEV}/.

作業が終わったらソースを削除します。ディスク スペースを節約するためですから、必須ではありません。
cd ../..
rm -r source-dir

source-dir は解凍して出来たディレクトリです。適宜読み替えてください。

上で作ったアーカイブからインストールするには次のようにします。アーカイブ名は適宜読み替えてください。
cd ${XLOCAL}
tar -jxf ${XGMPDEV}/library.tar.bz2

bin/*-configure や lib/pkgconfig/*.pc がある場合、それぞれの prefix 行を書き換えます。

必要ならパーミッションおよび改行コードを置き換えてください。詳しくはホスト環境の整備をご覧ください。

アンインストールする場合は次のようにします。
cd ${XLOCAL}
rm `tar -jtf ${XGMPDEV}/library.tar.bz2`

空ディレクトリは削除されません。

libmng


mng 形式のファイルを扱えるようにライブラリを作成します。

ソースの配布元とバージョン。
libmng - The MNG reference library&related info
http://gjuyn.xs4all.nl/libmng/

- libmng-1.0.9.tar.gz
tar -zxf ${XMGWSRC}/libmng-1.0.9.tar.gz
cd libmng-1.0.9

まず static ライブラリを作成します。
${XMINGW}/cross make -f makefiles/makefile.mingw >make.log 2>&1

makefiles/makefile.mingwdll を書き換えます。2箇所あります。

LDFLAGS を書き換える。
LDFLAGS=-L. -L$(LIBPATH) -lmng $(ZLIBLIB) $(JPEGLIB) $(LCMSLIB) -lm -s -k

install ターゲットの最後に追加する。
$(MKDIR) $(INSTALL_PREFIX)bin
$(COPY) $(LIBMNG_DLL) $(INSTALL_PREFIX)bin

clean してから shared ライブラリを作成します。ライブラリ名が static と重なるので libmng.dll.a に変えます。
${XMINGW}/cross make-f makefiles/makefile.mingw clean
${XMINGW}/cross make -f makefiles/makefile.mingwdll LIBMNG_A=libmng.dll.a prefix=${XLOCAL} >make.log 2>&1
mkdir target
${XMINGW}/cross make -f makefiles/makefile.mingwdll INSTALL_PREFIX=`pwd`/../target >install.log 2>&1
cd target
tar -jcf libmng-1.0.9-mingwdll.tar.bz2 bin
tar -jcf libmng-dev-1.0.9-mingwdll.tar.bz2 include lib
mv *.bz2 ${XGMPDEV}/.

popt (*)


ソースの配布元とバージョン。 popt は 2006/3/5sun 現在ここにあります。
ftp://jbj.org/pub/rpm-4.4.x/

- popt-1.10.4.tar.gz

tar -zxf ${XMGWSRC}/popt-1.10.4.tar.gz
cd popt-1.10.4
mkdir build
mkdir target
cd build
${XMINGW}/cross-ppconfigure --prefix=`pwd`/../target --enable-shared --disable-static --with-libiconv-prefix=${XLOCAL} --with-libintl-prefix=${XLOCAL} LDFLAGS="-L${XLOCAL}/lib"

libtool を書き換えます。詳しくは雑多な疑問と不正確な回答の「 shared ライブラリを作成できない」を参照してください。

${XMINGW}/cross make CFLAGS="-O2 -march=pentiumpro -DLANG_SORBIAN=0x2e -lintl" LDFALGS=-s >make.log 2>&1
-DLANG_SORBIAN=0x2e
定義されてないので。 MinGW 環境には locale.h がないためアプリ側で定数定義しているのですが、記述漏れがあって LANG_SORBIAN が定義されてない。
${XMINGW}/cross make install MKINSTALLDIRS=`pwd`/../mkinstalldirs >install.log 2>&1
MKINSTALLDIRS=`pwd`/../mkinstalldirs
make が mkinstalldirs を見つけられないので。
cd ../target
tar -jcf popt-1.10.4-bin.tar.bz2 bin man share
tar -jcf popt-dev-1.10.4.tar.bz2 include `find lib -xtype f -not -name \*.la`
mv *.bz2 ${XGMPDEV}/.

libxml2 (*)


ソースの配布元とバージョン。
The XML C parser and toolkit of Gnome
http://xmlsoft.org/

- libxml2-sources-2.6.26.tar.gz
tar -zxf ${XMGWSRC}/libxml2-sources-2.6.26.tar.gz
cd libxml2-sources-2.6.26
mkdir target
mkdir build
cd build
${XMINGW}/cross-ppconfigure --prefix=`pwd`/../target --enable-shared --disable-static --without-python --with-iconv=${XLOCAL} --with-zlib=${XLOCAL}
${XMINGW}/cross make CFLAGS="-O2 -march=pentiumpro" LDFALGS=-s >make.log 2>&1
${XMINGW}/cross make install >install.log 2>&1
cd ../target
tar -jcf libxml2-2.6.26-bin.tar.bz2 bin/*.dll
tar -jcf libxml2-2.6.26-tools.tar.bz2 bin/*.exe man/man1
tar -jcf libxml2-dev-2.6.26.tar.bz2 bin/xml2-config include `find lib -xtype f -not -name \*.la` man/man1/xml2-config.1 man/man3 share
mv *.bz2 ${XGMPDEV}/.

インストール後は bin/xml2-config の prefix 行をインストール先に合わせ書き換えてください。

libcroco (*)


librsvg が使用しています。

ソースの配布元とバージョン。
Libcroco, the CSS C toolkit for GNOME
http://www.freespiders.org/projects/libcroco/

- libcroco-0.6.0.tar.bz2

tar -zxf ${XMGWSRC}/libcroco-0.6.0.tar.bz2
cd libcroco-0.6.0
mkdir build
mkdir target
cd build
${XMINGW}/cross-ppconfigure --prefix=`pwd`/../target --enable-shared --disable-static

libtool を書き換えます。詳しくは雑多な疑問と不正確な回答の「 shared ライブラリを作成できない」を参照してください。
${XMINGW}/cross make CFLAGS="-O2 -march=pentiumpro `${XMINGW}/cross pkg-config --libs gdk-2.0`" LDFALGS=-s LIBS=-lxml2 >make.log 2>&1
`${XMINGW}/cross pkg-config --libs gdk-2.0`
リンクしないライブラリがあるので。深く調査してません。
${XMINGW}/cross make install >install.log 2>&1
cd ../target
tar -jcf libcroco-0.6.0-bin.tar.bz2 bin/*.{exe,dll}
tar -jcf libcroco-dev-0.6.0.tar.bz2 bin/*-config include `find lib -xtype f -name \*.a` lib/pkgconfig
mv *.bz2 ${XGMPDEV}/.

librsvg (*)


ソースの配布元とバージョン。
Scalable Vector Graphics - librsvg
http://librsvg.sourceforge.net/

- librsvg-2.16.1.tar.bz2
tar -zxf ${XMGWSRC}/librsvg-2.16.1.tar.bz2
cd librsvg-2.16.1
mkdir build
mkdir target
cd build
${XMINGW}/cross-ppconfigure --prefix=`pwd`/../target --enable-shared --disable-static --without-x --with-croco --with-svgz CFLAGS="-O2 -march=pentiumpro" LDFLAGS="-L${XLOCAL}/lib -Wl,-s"
${XMINGW}/cross make >make.log 2>&1
${XMINGW}/cross make install >install.log 2>&1
cd ../target
tar -jcf librsvg-2.16.1-bin.tar.bz2 bin/*.dll
tar -jcf librsvg-dev-2.16.1.tar.bz2 bin/rsvg include `find lib -xtype f -name \*.a` lib/pkgconfig man
tar -jcf librsvg-2.16.1-tools.tar.bz2 bin/*.exe
mv *.bz2 ${XGMPDEV}/.

追記[2007/9/27thu]

librsvg.a の作成でこけるなら、 gtk-engine/Makefile の libsvg_la_LIBADD に $(LIBGSF_LIBS) を足し、 gtk-engine/Makefile の libsvg_la_LIBADD の $(top_builddir)/librsvg-2.la を -Wl,$(top_builddir)/.libs/librsvg-2.la に置き換える。

aalib


ソースの配布元とバージョン。
SourceForge.net: AA project
http://sourceforge.net/projects/aa-project

- aalib-1.4rc5.tar.gz
- text.zip
- vga.zip
tar -zxf ${XMGWSRC}/aalib-1.4rc5.tar.gz
unzip ${XMGWSRC}/text.zip
unzip ${XMGWSRC}/va.zip
cd aalib-1.4.0
mkdir build
mkdir target
cd build

../configure を書き換えます。 linux_driver_test=yes の値を no に変えます。
${XMINGW}/cross-ppconfigure --prefix=`pwd`/../target --without-x --without-curses-driver

src/config.h を書き換えます。ファイルの最後に1行加えます。
 #include "winsock2.h"

${XMINGW}/cross make CFLAGS="-O2 -march=pentiumpro" LDFLAGS="-lm -L`pwd`/../../text -L`pwd`/../../vga -lvga -ltext -lwsock32" AALIB_LIBS="-laa -lm" LIBS=-lm >make.log 2>&1
${XMINGW}/cross make install >install.log 2>&1
cd ../target

bin フォルダのバイナリファイルの拡張子を変更します。
for f in `find bin -xtype f -not -name \*-config`; do mv $f $f.exe; done
tar -jcf aalib-1.4rc5-bin.tar.bz2 bin/*.exe
tar -jcf aalib-dev-1.4rc5.tar.bz2 bin/aalib-config include info lib/*.a man share
mv *.bz2 ${XGMPDEV}/.

libwmf


ソースの配布元とバージョン。
libwmf, library to convert wmf files
http://wvware.sourceforge.net/libwmf.html

- libwmf-0.2.8.4.tar.gz
tar -zxf ${XMGWSRC}/libwmf-0.2.8.4.tar.gz
cd libwmf-0.2.8.4
mkdir build
mkdir target
cd build
${XMINGW}/cross-ppconfigure --prefix=`pwd`/../target --with-libxml2=${XLOCAL} --without-x --disable-gd CFLAGS="-I${XLOCAL}/include -L${XLOCAL}/lib"
  • freetype のチェックでエラーになる場合、configure の当該箇所の main を WinMain に書き換える。
  • prefix は実際にインストールするパスを指定するべき。でなければ make install 時に wmfdocdir と fontdir を指定すること。

${XMINGW}/cross make CFLAGS="-O2 -march=pentiumpro -mwindows `${XMINGW}/cross pkg-config --cflags --libs freetype2 gtk+-2.0 glib-2.0`" CXXFLAGS="-O2 -march=pentiumpro" LDFLAGS=-s >make.log 2>&1
  • CXXFLAGS はいらないかも。
${XMINGW}/cross make install >install.log 2>&1

configure で指定した prefix と異なる場所にインストールする場合 wmfdocdir と fontdir に値を指定します。たとえば prefix=`pwd`/../target wmfdocdir=`pwd`/../target/share/doc/libwmf fontdir=`pwd`/../target/share/libwmf/fonts のように。

cd ../target
tar -jcf libwmf-0.2.8.4-bin.tar.bz2 bin/*.dll share/libwmf
tar -jcf libwmf-dev-0.2.8.4.tar.bz2 bin/libwmf-{config,fontmap} include `find lib -xtype f -name \*.a -or -name \*.dll` share/doc/libwmf
tar -jcf libwmf-0.2.8.4-tool.tar.bz2 bin/*.exe
mv *.bz2 ${XGMPDEV}/.

libgsf (*)


ソースの配布元とバージョン。
libgsf
http://directory.fsf.org/libgsf.html

- libgsf-1.14.0.tar.bz2
tar -jxf ${XMGWSRC}/libgsf-1.14.1.tar.bz2
cd libgsf-1.14.1
mkdir build
mkdir target
cd build
${XMINGW}/cross-ppconfigure --prefix=`pwd`/../target --with-zlib=${XLOCAL} --with-bz2 CFLAGS="-O2 -march=pentiumpro -L${XLOCAL}/lib"
${XMINGW}/cross make >make.log 2>&1
${XMINGW}/cross make install >install.log 2>&1
cd ../target
tar -jcf libgsf-1.14.1-bin.tar.bz2 bin lib/locale
tar -jcf libgsf-dev-1.14.1.tar.bz2 include lib/*.a lib/pkgconfig man share
mv *.bz2 ${XGMPDEV}/.
1.14.0 の不具合を修正するパッチ

この問題は 1.14.1 で修正されています。

 ../gsf/gsf-timestamp.c に次の行を追加します。
#include <windows.h>

書き換えも必要です。
--- gsf-timestamp.c~    2006-04-17 14:47:17.000000000 +0000
+++ gsf-timestamp.c     2006-04-17 15:02:12.870000000 +0000
@@ -161,7 +161,7 @@
        g_return_val_if_fail (stamp != NULL, g_strdup ("<invalid>"));

        t = stamp->timet;       /* Use an honest time_t for gmtime_r.  */
-       gmtime_r (&t, &tm);
+       tm = *gmtime (&t);

        /* using 'YYYY-MM-DDThh:mm:ss' */
        return g_strdup_printf ("%4d-%02d-%02dT%02d:%02d:%d",

gsf-win32/Makefile の am_libgsf_win32_1_la_OBJECTS に ../gsf/gsf-input.lo と ../gsf/gsf-output.lo を追加します。
        ../gsf/gsf-input.lo \
        ../gsf/gsf-output.lo \
1.14.7 の補足

1.14.7 には色々と問題があるため素直にコンパイルできません。
  • libbz2 を configure が検出できないかもしれない。
  • iconv 関係のライブラリが必須であるにもかかわらず configure が検査しない(見つけてくれない)。
  • ライブラリ検索パスに libgsf-1.a や libgsf-1.dll.a があると libtool がgsf/.libs/libgsf-1.a をリンクしない。
  • libtool に -no-undefined オプションを渡しているのだが、これを付加すると shared でリンクしてくれない。
  • libtool が -lz や -lbz2 オプションを削除してしまう。

ライブラリ検索パスに libgsf-1.a もしくは libgsf-1.dll.a がある場合は削除するか退避させる。

libbz2 を configure が見つけてくれない場合は configure の ac_cv_lib_bz2_BZ2_bzDecompressInit=no を yes に変える。

iconv を見つけてくれるように configure に CFLAGS で iconv ライブラリの置き場所を渡す。

libtool に shared でリンクさせるため libtool を書き換え、 Makefile から -no-undefined オプションを取り除く。 libtool の allow_undefined_flag の値を supported にし、 always_export_symbols の値を yes にする。 gsf-win32/Makefile の am__append_1 から -no-undefined を削除し、 make 時に LDFLAGS を上書きする。

libtool が -lz や -lbz2 を削除してしまうなら make 時に LDFLAGS で -Wl,-lz -Wl,-lbz2 を渡す。

fontconfig (*)


ソースの配布元とバージョン。
fontconfig.org - FrontPage
http://www.fontconfig.org/wiki/

- fontconfig-2.4.2.tar.gz
tar -zxf ${XMGWSRC}/fontconfig-2.4.2.tar.gz
cd fontconfig-2.4.2
mkdir target
mkdir build
cd build/
${XMINGW}/cross-ppconfigure --prefix=`pwd`/../target --enable-shared --enable-libxml2 --with-arch=mingw32 --with-freetype-config=${XLOCAL}/bin/freetype-config CFLAGS="-L${XLOCAL}/lib" CC_FOR_BUILD="build4cc"
${XMINGW}/cross make CFLAGS="-O2 -march=pentiumpro" LDFALGS="-s" >make.log 2>&1
${XMINGW}/cross make install >install.log 2>&1
cd ../target

etc/fonts/fonts.conf の cachedir 節を書き換える。たとえば以下のように。
		<cachedir>../var/cache/fontconfig</cachedir>
tar -jcf fontconfig-2.4.2-bin.tar.bz2 bin/*.dll etc var
tar -jcf fontconfig-dev-2.4.2.tar.bz2 include `find lib -xtype f -not -name \*.la` share
tar -jcf fontconfig-2.4.2-tools.tar.bz2 bin/*.exe
mv *.bz2 ${XGMPDEV}/.

linpng (*)


ソースの配布元とバージョン。
LIBPNG
http://libpng.sourceforge.net/

- libpng-1.2.14.tar.bz2
tar -jxf ${XMGWSRC}/libpng-1.2.14.tar.bz2
cd libpng-1.2.14
mkdir target
mkdir build
cd build
${XMINGW}/cross mingw32-windres ../scripts/pngw32.rc pngw32.rc.o

libpng のコンパイルは configure で作成した Makefile を使用する方法と用意された script/makefile.mingw を使用する方法の二通りある。どちらもやや癖がある。

インストール後は bin/libpng12-config と lib/pkgconfig/libpng.pc の prefix の書き換えを忘れずに。
configure を使用する方法
${XMINGW}/cross-ppconfigure --prefix=`pwd`/../target LDFLAGS="-L${XLOCAL}/lib"

CFLAGS オプションは script/makefile.mingw の規定値およびコメントを参照し指定する。
${XMINGW}/cross make CFLAGS="-O2 -march=pentiumpro -funroll-loops -fomit-frame-pointer -DPNG_USE_PNGGCCRD" LDFLAGS="-L${XLOCAL}/lib -Wl,`pwd`/pngw32.rc.o -Wl,-s" >make.log 2>&1
${XMINGW}/cross make install >install.log 2>&1
cd ../target

libpng-3.dll を libpng13.dll に置き換える。コンパイル済み gtk ランタイムが libpng13.dll を参照するため。 lib/libpng.dll.a は使用しない。通常は libpng12.dll.a をリンクする。
mv bin/libpng-3.dll bin/libpng13.dll
tar -jcf libpng-1.2.14-bin.tar.bz2 bin/*.dll
tar -jcf libpng-dev-1.2.14.tar.bz2 bin/*-config include lib/libpng.a lib/libpng12.a lib/pkgconfig share
mv *.bz2 ${XGMPDEV}/.
script/makefile.mingw を使用する方法

buildsetup-tell ターゲットでインストール先の設定が表示される。 CFLAGS は makefile.mingw にサンプルおよび規定値がある。参考にしつつ設定する。 -DPNG_USE_PNGGCCRD する場合は makefile.mingw の OBJS に pnggccrd.o を追加する。 gtk ランタイムが libpng13.dll を参照するので dll 名を変更する。
${XMINGW}/cross make -f ../scripts/makefile.mingw prefix=`pwd`/../target SRCDIR=../ ZLIBLIB=${XLOCAL}/lib MINGDLL=13 CFLAGS="-Wall -O2 -march=pentiumpro -funroll-loops -fomit-frame-pointer -DPNG_USE_PNGGCCRD -DPNG_BUILD_DLL" MINGW_LDFLAGS="-Wl,`pwd`/pngw32.rc.o -Wl,-s" install >make.log 2>&1

 -DPNG_BUILD_DLL しなければ libpng13.dll の関数がエクスポートされないので注意。
cd ../target
tar -jcf libpng-1.2.14-bin.tar.bz2 bin/*.dll
tar -jcf libpng-dev-1.2.14.tar.bz2 bin/*-config include lib lib/pkgconfig man
mv *.bz2 ${XGMPDEV}/.

libtiff (*)


ソースの配布元とバージョン。ここでは Debian パッチを使用します。
LibTIFF - TIFF Library and Utilities
http://www.remotesensing.org/libtiff/

http://www.ring.gr.jp/archives/linux/debian/debian...
- tiff_3.8.2.orig.tar.gz
- tiff_3.8.2-6.diff.gz
tar -Ozxf ${XMGWSRC}/tiff_3.8.2.orig.tar.gz | tar -zx
cd tiff-3.8.2
zcat ${XMGWSRC}/tiff_3.8.2-6.diff.gz | patch -p1

パッチは5種類。
  • CVE-2006-3459-3465.patch
  • soname.patch
  • tiff2pdf-compression.patch
  • tiff2pdf-octal-printf.patch
  • tiffsplit-fname-overflow.patch
for f in debian/patches/*.patch; do patch -p1 -i $f; done

出力結果。一部失敗してるようだが、気にしない...
patching file libtiff/tif_dir.c
patching file libtiff/tif_dirinfo.c
patching file libtiff/tif_dirread.c
patching file libtiff/tif_fax3.c
patching file libtiff/tif_jpeg.c
patching file libtiff/tif_next.c
patching file libtiff/tif_pixarlog.c
patching file libtiff/tif_read.c
patching file Makefile.am
Hunk #1 FAILED at 108.
Hunk #2 FAILED at 117.
2 out of 2 hunks FAILED -- saving rejects to file Makefile.am.rej
patching file Makefile.in
Hunk #1 FAILED at 347.
1 out of 1 hunk FAILED -- saving rejects to file Makefile.in.rej
patching file tools/tiff2pdf.c
patching file tools/tiff2pdf.c
Hunk #1 succeeded at 3660 (offset -8 lines).
patching file tools/tiffsplit.c

作業ディレクトリを作り configure && make 。
mkdir target
mkdir build
cd build
${XMINGW}/cross-ppconfigure --prefix=`pwd`/../target --enable-rpath --disable-largefile --without-x LDFLAGS=-L${XLOCAL}/lib
${XMINGW}/cross make CFLAGS="-O2 -march=pentiumpro" CXXFLAGS="-O2 -march=pentiumpro" LDFLAGS="-L${XLOCAL}/lib -s" >make.log 2>&1
${XMINGW}/cross make install >install.log 2>&1
cd ../target
tar -jcf tiff-3.8.2-6-bin.tar.bz2 bin/*.dll
tar -jcf tiff-3.8.2-6-tools.tar.bz2 bin/*.exe man/man1
tar -jcf tiff-dev-3.8.2-6.tar.bz2 include lib/*.a man/man3 share
mv *.bz2 ${XGMPDEV}/.

libtiff-3.dll, libtiffxx-3.dll のファイル名になるので注意してください。

FreeType2 (*)


ソースの配布元とバージョン。
The FreeType Project
http://freetype.sourceforge.net/

- freetype-2.3.1.tar.bz2
tar -jxf ${XMGWSRC}/freetype-2.3.1.tar.bz2
cd freetype-2.3.1
mkdir target
mkdir build
cd build

configure でビルド環境用のコンパイラを指定する必要があります。 CFLAGS & LDFLAGS は Makefile の確認が大変なのでここで指定します。
${XMINGW}/cross-ppconfigure --prefix=${XLOCAL} CC_BUILD=${XMINGW}/bin/build4cc CFLAGS="-O2 -march=pentiumpro" LDFLAGS="-Wl,-s"
${XMINGW}/cross make >make.log 2>&1

ライブラリ名を GnuWin32 に倣い freetype6.dll に変えて手動でリンクします。パラメータ等 make.log から拾ってください。 libfreetype.dll.a はそのまま。

インストールは `pwd`/../target にします。
${XMINGW}/cross make prefix=`pwd`/../target install >install.log 2>&1
cd ../target/
rm bin/libfreetype-6.dll
cp ../build/.libs/freetype6.dll bin/.
tar -jcf freetype-2.3.1-bin.tar.bz2 bin/*.dll
tar -jcf freetype-dev-2.3.1.tar.bz2 bin/*-config include lib/*.a lib/pkgconfig share
mv *.bz2 ${XGMPDEV}/.

必要であれば bin/freetype-config と lib/pkgconfig/freetype2.pc の prefix 行を変更してください。

libiconv (*)


ソースの配布元とバージョン。
libiconv - GNU Project - Free Software Foundation (FSF)
http://www.gnu.org/software/libiconv/

- libiconv-1.11.tar.gz
tar -zxf ${XMGWSRC}/libiconv-1.11.tar.gz
cd libiconv-1.11
mkdir target
mkdir build
cd build
${XMINGW}/cross-ppconfigure --prefix=${XLOCAL} --enable-extra-encodings --with-libintl-prefix=${XLOCAL}
${XMINGW}/cross make CFLAGS="-O2 -march=pentiumpro" >make.log 2>&1
${XMINGW}/cross mingw32-windres -o charset.rc.o ../libcharset/windows/charset.rc
${XMINGW}/cross mingw32-windres -o iconv.rc.o ../windows/iconv.rc

ライブラリ名を GnuWin32 に倣い charset.dll, iconv.dll に変えて手動でリンクします。リンクでは上記 rc.o をパラメータに追加します。パラメータ等 make.log から拾ってください。 lib*.dll.a はそのまま。以下、参考。
cd libcharset/lib
${XMINGW}/cross mingw32-gcc -shared .libs/localcharset.o .libs/relocatable.o ../../charset.rc.o -o .libs/charset.dll -Wl,--enable-auto-image-base -Xlinker --out-implib -Xlinker .libs/libcharset.dll.a
cd ../..

cd lib
${XMINGW}/cross mingw32-gcc -shared .libs/iconv.o .libs/localcharset.o .libs/relocatable.o .libs/iconv-exports.o ../iconv.rc.o -Wl,--export-all-symbols -o .libs/iconv.dll -Wl,--enable-auto-image-base -Xlinker --out-implib -Xlinker .libs/libiconv.dll.a
cd ..

インストールは `pwd`/../target にします。
${XMINGW}/cross make prefix=`pwd`/../target install >install.log 2>&1
cd ../target
rm bin/*.dll
cp ../build/libcharset/lib/.libs/charset.dll bin/.
cp ../build/lib/.libs/iconv.dll bin/.
mv bin/iconv bin/iconv.exe
tar -jcf libiconv-1.11-tools.tar.bz2 bin/*.exe
tar -jcf libiconv-1.11-bin.tar.bz2 bin/*.dll lib/charset.alias
tar -jcf libiconv-dev-1.11.tar.bz2 bin/*.exe include lib/*.a share
mv *.bz2 ${XGMPDEV}/.

libexif


ソースの配布元とバージョン。
SourceForge.net: EXIF Tag Parsing Library
https://sourceforge.net/projects/libexif

- libexif-0.6.15.tar.bz2
tar -zxf ${XMGWSRC}/libexif-0.6.15.tar.bz2
cd libexif-0.6.15
mkdir target
mkdir build
cd build/
${XMINGW}/cross-ppconfigure --prefix=`pwd`/../target CFLAGS="-O2 -march=pentiumpro -I${XLOCAL}/include" LDFLAGS="-L${XLOCAL}/lib -Wl,-s"
${XMINGW}/cross make >make.log 2>&1
${XMINGW}/cross make install >install.log 2>&1
cd ../target
tar -jcf libexif-0.6.15-bin.tar.bz2 bin
tar -jcf libexif-dev-0.6.15.tar.bz2 include lib/*.a lib/pkgconfig share
mv *.bz2 ${XGMPDEV}/.

lcms (*)


ソースの配布元とバージョン。
LittleCms, Great color at small footprint
http://www.littlecms.com/

- lcms-1.16.tar.gz
tar -zxf ${XMGWSRC}/lcms-1.16.tar.gz
cd lcms-1.16
mkdir target
mkdir build
cd build/
${XMINGW}/cross-ppconfigure --prefix=`pwd`/../target CFLAGS="-O2 -march=pentiumpro" LDFLAGS="-Wl,-s"

icc34.h を編集する。たとえば、こんな感じ。
--- ../include/icc34.h~	2006-12-13 11:39:39.000000000 +0000
+++ ../include/icc34.h	2007-06-06 15:04:18.000000000 +0000
@@ -151,15 +151,15 @@
   PACKAGE_NAME is defined if autoconf is being used 
 */
 
-typedef @UINT8_T@	icUInt8Number;
-typedef @UINT16_T@	icUInt16Number;
-typedef @UINT32_T@	icUInt32Number;
-typedef @UINT32_T@	icUInt64Number[2];
-
-typedef @INT8_T@	icInt8Number;
-typedef @INT16_T@	icInt16Number;
-typedef @INT32_T@	icInt32Number;
-typedef @INT32_T@	icInt64Number[2];
+typedef uint8_t	icUInt8Number;
+typedef uint16_t	icUInt16Number;
+typedef uint32_t	icUInt32Number;
+typedef uint32_t	icUInt64Number[2];
+
+typedef int8_t	icInt8Number;
+typedef int16_t	icInt16Number;
+typedef int32_t	icInt32Number;
+typedef int32_t	icInt64Number[2];
 
 #else
 
${XMINGW}/cross make >make.log 2>&1
${XMINGW}/cross make install >install.log 2>&1
cd ../target
tar -jcf lcms-1.16-bin.tar.bz2 bin/*.dll
tar -jcf lcms-dev-1.16.tar.bz2 include lib/*.a lib/pkgconfig share
tar -jcf lcms-1.16-tools.tar.bz2 bin/*.exe
mv *.bz2 ${XGMPDEV}/.

gtk-engines


ソースの配布元とバージョン。
Index of /archives/X/gnome/sources/gtk-engines - Ring Server Project
http://www.ring.gr.jp/archives/X/gnome/sources/gtk...

- gtk-engines-2.11.0.tar.bz2
tar -zxf ${XMGWSRC}/gtk-engines-2.11.0.tar.bz2
cd gtk-engines-2.11.0
mkdir target
mkdir build
cd build/
${XMINGW}/cross-ppconfigure --prefix=`pwd`/../target --enable-all --enable-animation CFLAGS="-O2 -march=pentiumpro -I${XLOCAL}/include" LDFLAGS="-L${XLOCAL}/lib -Wl,-s"

上記 configure の結果、サポートする機能。
Special Flags:
Development Code - Disabled
Paranoia Flags - Disabled
Disable Deprecated - Disabled
Engine Schemas - Enabled

Engines and Themes:
ClearLooks - Including with animation support
Crux - Including
HC - Including
Industrial - Including
Mist - Including
Redmond - Including
Glide - Including
Smooth - Including
ThinIce - Including
Lua - Skipping
${XMINGW}/cross make >make.log 2>&1
${XMINGW}/cross make install >install.log 2>&1
cd ../target
tar -jcf gtk-engine-2.11.0-bin.tar.bz2 `find lib -name \*.dll` share
tar -jcf gtk-engine-dev-2.11.0.tar.bz2 `find lib -name \*.a` lib/pkgconfig
mv *.bz2 ${XGMPDEV}/.

libart lgpl


ソースの配布元とバージョン。
Index of /archives/X/gnome/sources/libart_lgpl - Ring Server Project
http://www.ring.gr.jp/archives/X/gnome/sources/lib...

- libart_lgpl-2.3.19.tar.bz2
tar -jxf libart_lgpl-2.3.19.tar.bz2
cd libart_lgpl-2.3.19
mkdir target
mkdir build
cd build
cp ../libart.def .
${XMINGW}/cross-ppconfigure --prefix=`pwd`/../target --host=mingw32 --build=${MACHTYPE}

gen_art_config を実行する必要がある。クロスコンパイル環境と同じ設定でかまわないならネイティブでコンパイルし実行する。環境が異なる場合は作成された gen_art_config.exe を実行環境で実行し、出力を art_config.h に保存しビルドディレクトリにコピーする。以下、ネイティブで実行する場合。実行許可属性が必要かもしれない。
gcc -O2 -march=pentiumpro -I`pwd` -s ../gen_art_config.c -o gen_art_config
./gen_art_config > art_config.h
${XMINGW}/cross make CFLAGS="-O2 -march=pentiumpro -pipe -fomit-frame-pointer -I`pwd`" LDFLAGS="-Wl,-s" >make.log 2>&1
${XMINGW}/cross make install >install.log 2>&1
cd ../target
tar -jcf libart_lgpl-2.3.19-bin.tar.bz2 bin/*.dll
tar -jcf libart_lgpl-dev-2.3.19.tar.bz2 bin/*-config include lib/*.a lib/pkgconfig

libart2-config 内の prefix 書き換えを忘れずに。

gettext


ソースの配布元とバージョン。
gettext - GNU Project - Free Software Foundation (FSF)
http://www.gnu.org/software/gettext/gettext.html

- gettext-0.17.tar.gz
tar -zxf gettext-0.17.tar.gz
cd gettext-0.17
mkdir target
mkdir build
cd build

0.17 には不具合があり、 libintl_printf がエクスポートされないため libintl_printf を使用するアプリケーションでリンクエラーになります。 gettext-runtime/intl/libgnuintl.h.in と gettext-runtime/intl/print.c の以下に示す行から || defined _ _MINGW32_ _ を削除します。必ず configure の前に変更してください。 configure してしまった場合は build フォルダの中身を削除し、 configure を再実行します。
 /* This needs to be consistent with libgnuintl.h.in.  */
 #if defined NetBSD || defined BEOS || defined CYGWIN || defined MINGW32
 /* Don't break attribute*1.
    This redefinition is only possible because the libc in NetBSD, Cygwin,
    mingw does not have a function printf.  */
 # define libintl_printf printf
 #endif

configure オプションで java 関係のビルドは省略しています。 static ライブラリも作成しません。
${XMINGW}/cross-ppconfigure --prefix=`pwd`/../target --enable-shared --disable-static --disable-java --disable-native-java --enable-threads=win32 --disable-rpath --enable-relocatable --disable-openmp --disable-largefile --with-libiconv-prefix=${XLOCAL} --with-libcroco-0.6-prefix=${XLOCAL} --with-libxml2-prefix=${XLOCAL}
${XMINGW}/cross make CFLAGS="-O2 -march=pentiumpro -pipe -fomit-frame-pointer -Wl,-s" install >make.log 2>&1

dll 名を intl.dll に変更する場合は make.log から当該行を抜き出し名前を変更し再コンパイルします。たとえば次のように。※ 行が長くなるため整形しています。
cd gettext-runtime/intl
${XMINGW}/cross mingw32-gcc -shared .libs/bindtextdom.o .libs/dcgettext.o \
.libs/dgettext.o .libs/gettext.o .libs/finddomain.o .libs/hash-string.o \
.libs/loadmsgcat.o .libs/localealias.o .libs/textdomain.o .libs/l10nflist.o \
.libs/explodename.o .libs/dcigettext.o .libs/dcngettext.o .libs/dngettext.o \
.libs/ngettext.o .libs/plural.o .libs/plural-exp.o .libs/localcharset.o \
.libs/lock.o .libs/relocatable.o .libs/langprefs.o .libs/localename.o \
.libs/log.o .libs/printf.o .libs/version.o .libs/osdep.o \
.libs/intl-compat.o -L${XLOCAL}/lib -liconv -march=pentiumpro -Wl,-s \
-Wl,--disable-auto-import -Wl,--export-all-symbols -o .libs/intl.dll \
-Wl,--enable-auto-image-base -Xlinker --out-implib -Xlinker \
.libs/libintl.dll.a
cp .libs/libintl.dll.a ../../../target/lib/.
cp .libs/intl.dll ../../../target/bin/.
cd ../..
cd ../target
tar -jcf gettext-0.17-bin.tar.bz2 bin/intl.dll lib/charset.alias
tar -jcf gettext-dev-0.17.tar.bz2 `find bin/ -not -name \*.dll -or -not -name \*.exe` include
tar -jcf gettext-0.17-tools.tar.bz2 bin/*.{exe,dll} share/locale share/info share/man

Python


todo

更新履歴


2007/12/21thu gettext を追記。
2007/9/27thu libgsf および librsvg の補足、 libart lgpl を追記。
2007/6/13wed libexif, lcms, gtk-engines 追記。 librsvg の不備を修正。
2007/3/4sun libiconv 追記。
2007/3/3sat FreeType2 追記。
2007/3/1thu typo 修正。
2007/2/20tue libtiff 追記。記述調整。
2007/2/18sun libpng 追記。
2007/2/15thu libgsf パッチの修正。
2007/2/9fri ページの統合と新規作成。 fontconfig を追記。
2006/6/8thu libgsf 1.14.1 に対応。
2006/4/22sat libwmf, libgsf ページ作成。
2006/3/12sun popt, libcroco, librsvg のリンク切れを修正。 aalib ページ作成。
2006/3/9thu popt, libxml2, libcroco, librsvg ページ作成。
2006/3/5sun libmng ページ作成。

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Wiki内検索

編集にはIDが必要です