[magick-developers] Static portable build for OSX?

Samuel Monsarrat samuel.monsarrat at kelis.fr
Fri Apr 11 06:51:18 PDT 2008


Hi Kevin,

I found your doc, in fact I had already followed your how-to before my 
first Email.
We have been re-attempting to compile a fully static version of convert, 
we have succeeded under Intel but not ppc, this is how we did it:

Compile all the required delegates to a specific prefix (as per your doc 
- with tweaks due to newer versions).
For us this means:
bzip2-1.0.3
freetype-2.3.5
jasper-1.900.1
jbigkit
libjpeg-6b
libpng-1.2.26
libxml2-2.6.29
tiff-3.8.2
zlib-1.2.3
freetype and libxml being two extra delegates in addition to your 
original set.

Now, this is where the problems occur, we configure IM with:
./configure --prefix=/Users/sam/dev/im/bui --enable-delegate-build 
CPPFLAGS='-I/Users/sam/dev/im/bui/include' 
LDFLAGS='-L/Users/sam/dev/im/bui/lib' --disable-shared --without-modules 
--without-x --without-openexr --without-wmf --without-perl --with-xml 
--without-gvc --without-magick-plus-plus

then 'make' and 'make install' provide us with a seemingly working 
imagemagick in --prefix=/Users/sam/dev/im/bui except that:
$ otool -L convert
convert:
        
/System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices 
(compatibility version 1.0.0, current version 34.0.0)
        /Users/sam/dev/im/bui/lib/libtiff.3.dylib (compatibility version 
12.0.0, current version 12.2.0)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current 
version 111.0.0)
        /Users/sam/dev/im/bui/lib/libjpeg.62.dylib (compatibility 
version 63.0.0, current version 63.0.0)
        /Users/sam/dev/im/bui/lib/libpng12.0.dylib (compatibility 
version 27.0.0, current version 27.0.0)
        /usr/lib/libbz2.1.0.dylib (compatibility version 1.0.0, current 
version 1.0.4)
        /Users/sam/dev/im/bui/lib/libxml2.2.dylib (compatibility version 
9.0.0, current version 9.29.0)
        /usr/lib/libiconv.2.dylib (compatibility version 7.0.0, current 
version 7.0.0)
        /Users/sam/dev/im/bui/lib/libfreetype.6.dylib (compatibility 
version 10.0.0, current version 10.16.0)
        /usr/lib/libz.1.dylib (compatibility version 1.0.0, current 
version 1.2.3)
        /usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current 
version 1.0.0)

hmm that aint static at all....

we then recompile convert by hand like this:
gcc magick/.libs/libMagickCore.a -o convert -I . 
/Users/sam/dev/im/bui/lib/libtiff.a /Users/sam/dev/im/bui/lib/libpng.a 
/Users/sam/dev/im/bui/lib/libjasper.a 
/Users/sam/dev/im/bui/lib/libjpeg.a /Users/sam/dev/im/bui/lib/libbz2.a 
/Users/sam/dev/im/bui/lib/libz.a /Users/sam/dev/im/bui/lib/libjbig.a 
/Users/sam/dev/im/bui/lib/libfreetype.a 
/Users/sam/dev/im/bui/lib/libxml2.a utilities/convert.o

This time the resulting convert binary is truly static (at least as far 
as the delegates are concerned) and is 6mb in size:
$ otool -L convert
convert:
        /usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current 
version 1.0.0)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current 
version 111.0.0)

So far so good, I now have a static Intel build of convert :).

But, when I attempt to do the same think under MacOSX 10.4 on a ppc 
machine I start having problems right from the start: the imagemagick 
configure script refuses to find freetype, even though I have compiled 
it exactly in the same way as on my Intel box. Given that this is not 
mandatory for me under ppc, I continue without freeType, only to come up 
against another bigger problem: my "hand made" convert compile fails 
horribly and it seems that none of the *.a libs are being read, none of 
the symbols they contain seem to be readable, If I start to include the 
different *.o files things slowly start to clear up but inclueding allt 
th *.o files of all the delegates... seems a bit painful.

Any Ideas on these two issues ?

Regards,
Samuel.



More information about the Magick-developers mailing list