|▽ ̄)ノ なページ再帰 - GcLでMGWx/GxCRgh/GIMP のコンパイル
このページの情報は古くなっています。ここにある情報でなければならない特別な理由がなければこちらをご覧ください。MinGW Cross Compile on Ubuntu

Gentoo coLinux で MinGW クロスコンパイル >> GIMPクロスコンパイルへの茨の道 >> GIMP のコンパイル

GIMP のコンパイル


GIMP をコンパイルし、パッケージ化を行います。

使えない機能が多数あります。
  • GIMP Print (*)
  • Python-fu
  • URL(URI)
  • Mail

(*) Gimp 2.3.11 では使えるかも。

用意するもの


GIMP ソースが必要です。
GIMP - The GNU Image Manipulation Program
http://www.gimp.org/
SourceForge.net: Files
http://sourceforge.net/project/showfiles.php?group...
  • gimp-2.2.10.tar.bz2

GIMP 2.2.10 のコンパイル


ソースを解凍しカレントを移動します。
tar -jxf gimp-2.2.10.tar.bz2
cd gimp-2.2.10
mkdir build
mkdir target
cd build

build、target ディレクトリを作成していますが、これは僕の趣味です ;-)

いくつか configure オプションを指定し実行します。
${XMINGW}/cross-ppconfigure --prefix=`pwd`/../target --enable-shared --disable-static --disable-print --disable-python --disable-largefile --without-x --without-gtk-doc CFLAGS="-L${XLOCAL}/lib -DXPM_NO_X"
--prefix=`pwd`/../target
下記「現在分かっている問題」をご覧ください。
--disable-print
印刷機能を無効にする。コンパイルできないので。開発版 Gimp 2.3.11 では Gtk+ の機能を利用しているためコンパイル可能。
--disable-python
Python-fu を作成しないオプションです。
--disable-largefile
4G以上のファイルをサポートしないオプションです。
CFLAGS
クロス環境対策です。

libtool を書き換えます。
  • allow_undefined_flag の値を supported にする。
  • always_export_symbols の値を yes にする。

前者は shared にするため。後者は ライブラリ名.dll.a の形式のライブラリを見つけられるようにするためです。--enable-shared オプションをつけても修正しなければならないのは、 configure を調べて原因を探すべきですが、現状、そこまでできてません。

../app/core/gimpdata.c を書き換えます。この行を削除します。
#error GIMP 2.2 for Win32 must be compiled against GLib 2.4

plug-ins/common/Makefile を書き換えます。次の行の値を削除します。
am__EXEEXT_3=mail
am__EXEEXT_10=url

アイコン リソースをコンパイルします。
${XMINGW}/cross mingw32-windres -I ../app -i ../app/gimp.rc -o gimp.rc.o

make を実行します。
${XMINGW}/cross make CFLAGS="-O2 -march=pentiumpro -I${XLOCAL}/include/freetype2" mwindows="-mwindows `pwd`/gimp.rc.o" LDFLAGS="-s -lwsock32" >make.log 2>&1
-I${XLOCAL}/include/freetype2
freetype/freetype.h が見つからないというエラーが出るため。
mwindows=-mwindows
コンソールが開かないように Windows アプリとしてコンパイルする。
-lwsock32
_select@20 が未解決というエラーが出るため。だったと思う。

1時間以上かかると思います。 make.log にエラーが記録されてなければ成功です。

インストールします。と言ってもクロス環境にインストールしても実行できないので、先に作った target ディレクトリに入れます。※ 下記「現在分かっている問題」をご覧ください。
${XMINGW}/cross make install >install.log 2>&1

install.log にエラーが記録されてなければ成功です。

target ディレクトリに移動します。
cd ../target

次のランタイムをコピーするか unzip してください。
libXpm-noX4.dll
libart_lgpl_2-2.dll
libcroco-0.6-3.dll
libexif-12.dll
libgsf-1-1.dll
liblcms-1.dll
libmng.1.dll (*)
libpopt-0.dll
librsvg-2-2.dll
libwmf-0-2-7.dll
libwmflite-0-2-7.dll
libxml2-2.dll
  • (*) 有れば。

パッケージ化します。
tar -jcf gimp-2.2.10-bin.tar.bz2 bin/*.exe bin/*.dll etc `find lib/gimp -xtype f -not -iname \*.a -and -not -iname \*.la` lib/locale share/gimp

開発ライブラリをパッケージ化します。
tar -jcf gimp-dev-2.2.10.tar.bz2 bin/gimptool-2.0 include `find lib -xtype f -iname \*.a` lib/pkgconfig share/aclocal

現在分かっている問題

  • テーマを変えようとすると落ちます。
    • 相性があるのか Lillqvist 氏の libgsf ランタイムで落ちる場合があります。 libgsf をコンパイルし直してください。
  • ???.dll が見つからないというエラーが表示され gimp の起動に失敗します。
    • libwmf と libgsf ランタイムが古い dll をリンクしようとしてエラーが表示されている可能性があります。現在手元にある、 Tor Lillqvist 氏が配布されているランタイムで発生しています。ライブラリをソースからコンパイルし、ランタイムを新しくしてください。
  • wmf プラグインのコンパイルに失敗する。
    • 調査中。plug-ins/common/Makefile の am__EXEEXT_13 = wmf$(EXEEXT) の値を削除するかコメントアウトしてください。
      • libwmf/types.h を書き換える。 freetype/freetype.h の前に #include <ft2build.h> 行を追加する。
  • "libtool: install: error: cannot install `libgimpmodule-2.0.la' to a directory not ending in /opt/xmingw32/local/lib" というエラーが表示されインストールできない。
    • configure で指定した prefix とは異なる場所にインストールを試みた場合表示されます。 la ファイルの当該箇所を書き換えるか、 rm `find ./ -name \*.la` を実行し la ファイルを削除してからインストールしてみてください。

自ビルド版と Simoncic もしくは他のパッケージと混在させる場合は、-g スイッチをつけてデフォルトと異なる gimprc を指定し起動してください。

更新履歴


2006/9/10sun configure に指定する prefix を変更。説明を加筆。ファイル アイコンの埋め込みを加筆。
2006/3/22sat 現在分かっている問題追記。
2006/3/19wed find に -xtype を渡すよう修正。現在分かっている問題追記。
2006/3/9thu パッケージ化の際にコピーするランタイム一覧を修正。
2006/3/6mon 不備の修正と現在分かっている問題追記。
2006/3/5sun ページ作成。