このページの情報は古くなっています。ここにある情報でなければならない特別な理由がなければこちらをご覧ください。MinGW Cross Compile on Ubuntu
Gentoo coLinux で MinGW クロスコンパイル >> GIMPクロスコンパイルへの茨の道 >> MinGW 環境の整備 >> ソースからインストール
アスタリスク(*)付のライブラリは gimp のコンパイルに必要です。
tar や unzip でソースアーカイブを作成し、その下に build 、 target サブディレクトリを作成し作業します。作業が終わると解凍ディレクトリごと削除します。
個々の説明では記述を簡略にするため、決まりきった作業の説明は省略しています。
作業は ${XBUILD} で行います。他の場所で作業する場合は適宜読み替えてください。
ソース アーカイブを解凍します。アーカイブ名は ${SRC} であらわします。アーカイブの種類によって解凍方法が異なります。
解凍して出来たディレクトリにカレントを移します。
コンパイルおよびインストール用ディレクトリを作成します。
build ディレクトリにカレントを移します。
configure する前、念のため --help で configure オプション情報を確認してください。
configure します。
直接インストールするなら --prefix=${XLOCAL} でもかまいません。他の、たとえば ${XLOCAL}/gimp にまとめてもいいです。ただしその場合は CFLAGS, CXXFLAGS, LDFLAGS 等に適宜オプションを渡してください。 configure がヘッダ/ライブラリを見つけられない場合も同様です。
configure で --enable-shared を指定しても shared ライブラリを作成できない場合があります。詳しくは雑多な疑問と不正確な回答の「 shared ライブラリを作成できない」を参照してください。
make します。必要があれば CFLAGS などにオプションを指定し実行します。指定すべき変数やオプションは Makefile の内容を考慮してください。
make.log にエラーが記録されてなければ正しくコンパイルされてます。
インストールします。インストール先は configure --prefix で指定したアドレスになります。 make prefix=<dir> で configure で指定したアドレスとは異なる場所にインストールできる場合があります。強引に他の場所に換える場合の障害は雑多な疑問と不正確な回答をご覧ください。
install.log にエラーが記録されてなければ正しくインストールされてます。
target にインストールした場合、サブディレクトリの内容を確認し、ランタイムと開発用ライブラリに分けてアーカイバでまとめます。ツール類があれば、これもまとめます。
library および ... の部分は適宜読み替えてください。
アーカイブは ${XGMPDEV} などに移動してください。
作業が終わったらソースを削除します。ディスク スペースを節約するためですから、必須ではありません。
source-dir は解凍して出来たディレクトリです。適宜読み替えてください。
上で作ったアーカイブからインストールするには次のようにします。アーカイブ名は適宜読み替えてください。
bin/*-configure や lib/pkgconfig/*.pc がある場合、それぞれの prefix 行を書き換えます。
必要ならパーミッションおよび改行コードを置き換えてください。詳しくはホスト環境の整備をご覧ください。
アンインストールする場合は次のようにします。
空ディレクトリは削除されません。
mng 形式のファイルを扱えるようにライブラリを作成します。
ソースの配布元とバージョン。
まず static ライブラリを作成します。
makefiles/makefile.mingwdll を書き換えます。2箇所あります。
LDFLAGS を書き換える。
install ターゲットの最後に追加する。
clean してから shared ライブラリを作成します。ライブラリ名が static と重なるので libmng.dll.a に変えます。
ソースの配布元とバージョン。 popt は 2006/3/5sun 現在ここにあります。
libtool を書き換えます。詳しくは雑多な疑問と不正確な回答の「 shared ライブラリを作成できない」を参照してください。
ソースの配布元とバージョン。
インストール後は bin/xml2-config の prefix 行をインストール先に合わせ書き換えてください。
librsvg が使用しています。
ソースの配布元とバージョン。
libtool を書き換えます。詳しくは雑多な疑問と不正確な回答の「 shared ライブラリを作成できない」を参照してください。
ソースの配布元とバージョン。
追記[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 に置き換える。
ソースの配布元とバージョン。
../configure を書き換えます。 linux_driver_test=yes の値を no に変えます。
src/config.h を書き換えます。ファイルの最後に1行加えます。
bin フォルダのバイナリファイルの拡張子を変更します。
ソースの配布元とバージョン。
configure で指定した prefix と異なる場所にインストールする場合 wmfdocdir と fontdir に値を指定します。たとえば prefix=`pwd`/../target wmfdocdir=`pwd`/../target/share/doc/libwmf fontdir=`pwd`/../target/share/libwmf/fonts のように。
ソースの配布元とバージョン。
この問題は 1.14.1 で修正されています。
../gsf/gsf-timestamp.c に次の行を追加します。
書き換えも必要です。
gsf-win32/Makefile の am_libgsf_win32_1_la_OBJECTS に ../gsf/gsf-input.lo と ../gsf/gsf-output.lo を追加します。
1.14.7 には色々と問題があるため素直にコンパイルできません。
ライブラリ検索パスに 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 を渡す。
ソースの配布元とバージョン。
etc/fonts/fonts.conf の cachedir 節を書き換える。たとえば以下のように。
ソースの配布元とバージョン。
libpng のコンパイルは configure で作成した Makefile を使用する方法と用意された script/makefile.mingw を使用する方法の二通りある。どちらもやや癖がある。
インストール後は bin/libpng12-config と lib/pkgconfig/libpng.pc の prefix の書き換えを忘れずに。
CFLAGS オプションは script/makefile.mingw の規定値およびコメントを参照し指定する。
libpng-3.dll を libpng13.dll に置き換える。コンパイル済み gtk ランタイムが libpng13.dll を参照するため。 lib/libpng.dll.a は使用しない。通常は libpng12.dll.a をリンクする。
buildsetup-tell ターゲットでインストール先の設定が表示される。 CFLAGS は makefile.mingw にサンプルおよび規定値がある。参考にしつつ設定する。 -DPNG_USE_PNGGCCRD する場合は makefile.mingw の OBJS に pnggccrd.o を追加する。 gtk ランタイムが libpng13.dll を参照するので dll 名を変更する。
-DPNG_BUILD_DLL しなければ libpng13.dll の関数がエクスポートされないので注意。
ソースの配布元とバージョン。ここでは Debian パッチを使用します。
パッチは5種類。
出力結果。一部失敗してるようだが、気にしない...
作業ディレクトリを作り configure && make 。
libtiff-3.dll, libtiffxx-3.dll のファイル名になるので注意してください。
ソースの配布元とバージョン。
configure でビルド環境用のコンパイラを指定する必要があります。 CFLAGS & LDFLAGS は Makefile の確認が大変なのでここで指定します。
ライブラリ名を GnuWin32 に倣い freetype6.dll に変えて手動でリンクします。パラメータ等 make.log から拾ってください。 libfreetype.dll.a はそのまま。
インストールは `pwd`/../target にします。
必要であれば bin/freetype-config と lib/pkgconfig/freetype2.pc の prefix 行を変更してください。
ソースの配布元とバージョン。
ライブラリ名を GnuWin32 に倣い charset.dll, iconv.dll に変えて手動でリンクします。リンクでは上記 rc.o をパラメータに追加します。パラメータ等 make.log から拾ってください。 lib*.dll.a はそのまま。以下、参考。
インストールは `pwd`/../target にします。
ソースの配布元とバージョン。
ソースの配布元とバージョン。
icc34.h を編集する。たとえば、こんな感じ。
ソースの配布元とバージョン。
上記 configure の結果、サポートする機能。
ソースの配布元とバージョン。
gen_art_config を実行する必要がある。クロスコンパイル環境と同じ設定でかまわないならネイティブでコンパイルし実行する。環境が異なる場合は作成された gen_art_config.exe を実行環境で実行し、出力を art_config.h に保存しビルドディレクトリにコピーする。以下、ネイティブで実行する場合。実行許可属性が必要かもしれない。
libart2-config 内の prefix 書き換えを忘れずに。
ソースの配布元とバージョン。
0.17 には不具合があり、 libintl_printf がエクスポートされないため libintl_printf を使用するアプリケーションでリンクエラーになります。 gettext-runtime/intl/libgnuintl.h.in と gettext-runtime/intl/print.c の以下に示す行から || defined _ _MINGW32_ _ を削除します。必ず configure の前に変更してください。 configure してしまった場合は build フォルダの中身を削除し、 configure を再実行します。
configure オプションで java 関係のビルドは省略しています。 static ライブラリも作成しません。
dll 名を intl.dll に変更する場合は make.log から当該行を抜き出し名前を変更し再コンパイルします。たとえば次のように。※ 行が長くなるため整形しています。
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 ページ作成。
Gentoo coLinux で MinGW クロスコンパイル >> GIMPクロスコンパイルへの茨の道 >> MinGW 環境の整備 >> ソースからインストール
アスタリスク(*)付のライブラリは gimp のコンパイルに必要です。
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`
空ディレクトリは削除されません。
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 は 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}/.
ソースの配布元とバージョン。
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 行をインストール先に合わせ書き換えてください。
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}/.
ソースの配布元とバージョン。
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 に置き換える。
ソースの配布元とバージョン。
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, 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
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.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 には色々と問題があるため素直にコンパイルできません。
- 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.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}/.
ソースの配布元とバージョン。
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 の書き換えを忘れずに。
${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}/.
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}/.
ソースの配布元とバージョン。ここでは 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 のファイル名になるので注意してください。
ソースの配布元とバージョン。
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 - 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}/.
ソースの配布元とバージョン。
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}/.
ソースの配布元とバージョン。
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}/.
ソースの配布元とバージョン。
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}/.
ソースの配布元とバージョン。
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 - 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
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 ページ作成。
タグ
コメントをかく