ImageMagick für OS X kompilieren
UPDATE: I made an english version of this article...
Da die Binary-Distribution von ImageMagick leider keine Unterstützung für TIFF enthält, musste ich mir eine eigene Version von ImageMagick kompilieren. Nachdem ich es nach langem Suchen endlich hinbekommen habt, gibt es hier die Anleitung dazu.
Meine eigene Version sollte wie das Binary, dass auf der ImageMagick-Webbsite angeboten wird, nicht fest installiert werden. Daher wurden die benötigten Bibliotheken ebenfalls nur lokal installiert. Die nach dieser Anleitung kompilierte Version von ImageMagick unterstützt außerdem nur die Standardformate von ImageMagick und die Formate JPEG, PNG und TIFF.
ACHTUNG: In den Folgenden Zeilen muss das User-Verzeichnis (hier benutzername
) entsprechend dem eigenen Benutzer angepasst werden! Alle folgenden Befehle können als gewöhnlicher Benutzer ausgeführt werden. Dennoch sollte bei der Wahl der Verzeichnisse darauf geachtet werden, dass nicht vorhandene Dateien überschrieben werden.
mkdir /Users/benutzername/sandbox cd /Users/benutzername/sandbox curl -O ftp://ftp.simplesystems.org/pub/libpng/png/src/libpng-1.2.18.tar.bz2 tar -xjf libpng-1.2.18.tar.bz2 cd libpng-1.2.18 ./configure \ CFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch ppc -arch i386" \ CPPFLAGS="-I/Users/benutzername/sandbox/ImageMagick/include" \ LDFLAGS="-Wl,-syslibroot,/Developer/SDKs/MacOSX10.4u.sdk -arch ppc -arch i386 -L/Users/benutzername/sandbox/ImageMagick/lib" \ --prefix=/Users/benutzername/sandbox/ImageMagick --enable-shared --disable-dependency-tracking make make install cd .. curl -O ftp://ftp.imagemagick.org/pub/ImageMagick/delegates/libjpeg-6b.tar.gz tar -xzf libjpeg-6b.tar.gz cd libjpeg-6b ./configure \ CFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch ppc -arch i386" \ CPPFLAGS="-I/Users/benutzername/sandbox/ImageMagick/include" \ LDFLAGS="-Wl,-syslibroot,/Developer/SDKs/MacOSX10.4u.sdk -arch ppc -arch i386 -L/Users/benutzername/sandbox/ImageMagick/lib" \ --prefix=/Users/benutzername/sandbox/ImageMagick --enable-shared --disable-dependency-tracking make make install cd ..
Versucht mal libtiff ganz normal als universal zu kompiliert, dann wird es nur auf der Intel-Plattform korrekt funktionieren. Das liegt daran, dass das configure-Skript die Byte-Order statisch erkennt und festlegt. Daher ist hier ein bisschen Handarbeit angesagt. Zu erst entpacken wir libtiff ganz normal und führen configure
aus:
curl -O http://dl.maptools.org/dl/libtiff/tiff-3.8.2.tar.gz tar -xzf tiff-3.8.2.tar.gz cd tiff-3.8.2 autoconf ./configure \ CFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch ppc -arch i386" \ CPPFLAGS="-I/Users/benutzername/sandbox/ImageMagick/include" \ LDFLAGS="-Wl,-syslibroot,/Developer/SDKs/MacOSX10.4u.sdk -arch ppc -arch i386 -L/Users/benutzername/sandbox/ImageMagick/lib" \ --prefix=/Users/benutzername/sandbox/ImageMagick --enable-shared --disable-dependency-tracking \ --disable-cxx --without-x --with-apple-opengl-framework
Bevor wir das ganze kompilieren müssen noch folgende Änderungen an zwei Dateien vorgenommen werden:
In der libtiff/tif_config.h
müssen alle Vorkommnisse von HOST_BIGENDIAN
, HOST_FILLORDER
und WORDS_BIGENDIAN
auskommentiert werden. Dann fügen wir die folgenden Zeilen ein:
#ifdef __BIG_ENDIAN__ #define HOST_BIGENDIAN 1 #define HOST_FILLORDER FILLORDER_MSB2LSB #define WORDS_BIGENDIAN 1 #else #define HOST_BIGENDIAN 0 #define HOST_FILLORDER FILLORDER_LSB2MSB #undef WORDS_BIGENDIAN #endif
In der libtiff/tifconf.h
müssen alle Vorkommnisse von HOST_BIGENDIAN
, HOST_FILLORDER
auskommentiert und durch folgenden Zeilen ersetzt werden:
#ifdef __BIG_ENDIAN__ #define HOST_BIGENDIAN 1 #define HOST_FILLORDER FILLORDER_MSB2LSB #else #define HOST_BIGENDIAN 0 #define HOST_FILLORDER FILLORDER_LSB2MSB #endif
Anschließend können wir die Bibliothek normal kompilieren und installieren:
make make install cd ..
Der Rest lässt sich wieder ohne Probleme als universal kompilieren.
curl -O ftp://xmlsoft.org/libxml2/libxml2-2.6.28.tar.gz tar -xzf libxml2-2.6.28.tar.gz cd libxml2-2.6.28 ./configure \ CFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch ppc -arch i386" \ CPPFLAGS="-I/Users/benutzername/sandbox/ImageMagick/include" \ LDFLAGS="-Wl,-syslibroot,/Developer/SDKs/MacOSX10.4u.sdk -arch ppc -arch i386 -L/Users/benutzername/sandbox/ImageMagick/lib" \ --prefix=/Users/benutzername/sandbox/ImageMagick --enable-shared --disable-dependency-tracking \ --without-python make make install cd .. curl -O ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick.tar.gz tar -xzf ImageMagick.tar.gz cd ImageMagick-6.3.4 ./configure \ CFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch ppc -arch i386" \ CPPFLAGS="-I/Users/benutzername/sandbox/ImageMagick/include" \ LDFLAGS="-Wl,-syslibroot,/Developer/SDKs/MacOSX10.4u.sdk -arch ppc -arch i386 -L/Users/benutzername/sandbox/ImageMagick/lib" \ --prefix=/Users/benutzername/sandbox/ImageMagick \ --enable-shared --disable-dependency-tracking --disable-installed --without-magick-plus-plus --without-perl --without-x make make install
Das Verzeichnis ImageMagick lässt sich nun an eine beliebige Stelle kopieren und mit den Umgebungsvariablen MAGICK_HOME
und DYLD_LIBRARY_PATH
verwenden:
export MAGICK_HOME=/Users/benutzername/sandbox/ImageMagick/ export DYLD_LIBRARY_PATH=/Users/benutzername/sandbox/ImageMagick/lib/ /Users/benutzername/sandbox/ImageMagick/bin/convert Version: ImageMagick 6.3.4 05/10/07 Q16 http://www.imagemagick.org ...
Diese Anleitung liefert leider nur eine sehr abgespeckte Version von ImageMagick, aber vielleicht sind trotzdem Teile davon nützlich. Bei Fragen könnt Ihr Euch auch gerne nochmal per Mail an mich wenden.