This file provides platform specific portability notes which don't
belong in README.txt. Usually ImageMagick compiles fine according to the
procedures described in README.txt, but sometimes a platform related
oddity causes a failure.
Cygwin
======
Problem
PerlMagick fails to link.
Indications
libperl.a is not found.
Solution
Configure like
./configure --enable-shared
or
./configure --enable-shared --with-modules
Cygwin doesn't normally come with a libperl.a but it does come with the
equivalent DLL. Using a shared build gets PerlMagick over the hurdle.
SGI Irix
=========
Problem
How to successfully configure ImageMagick using SGI's commercial
compiler (e.g. IRIX C/C++ v7.3.1.X)?
Indications
Compiling C++ code fails with the error:
#error directive: This header file requires the -LANG:std option
Solution
Configure like
CC=cc CFLAGS="-O2 -OPT:Olimit=0" CXX=CC \
CXXFLAGS="-LANG:std -Wl,-woff,84 -O2" CXXCPP="CC -LANG:std -E" \
./configure --with-modules --with-threads ...
with the following in /etc/compiler.defaults
-DEFAULT:abi=n32:isa=mips3
Linux 6.1
=========
Problem
When '-rpath /somedir' is added to LDFLAGS in order to tell the
linker to apply a run-time linker path, configure fails.
Indications
The configure script prints the error message
checking for executable suffix...
configure: error: cannot compute EXEEXT:
and the error message
gcc: unrecognized option `-rpath'
is written to config.log
Solution
Use 'LDFLAGS=-Wl,-rpath,/somedir' instead to pass the options through
to the linker.
FreeBSD 3.X and 4.X
===================
Problem
ImageMagick does not run after it is installed. The system does not
see an installed shared library until the 'ldconfig' command has
been executed (as root) using the correct options.
Indications
System fails to find shared library needed by ImageMagick.
Solution
Either reboot the system (which automatically runs ldconfig) or
execute
/sbin/ldconfig -m ${PREFIX}/lib
where ${PREFIX} is the prefix used when configuring ImageMagick
(default /usr/local).
Digital Unix and OSF/1
======================
Problem
Digital Unix provides an outdated JPEG shared library as part of the
system.
Indications
ImageMagick fails to link.
Solution
Ensure that the JPEG library you installed is used. Be sure to
install the JPEG library as a shared library.
Solaris 2.X
============
Problem
An outdated delegate library is used rather than the one just
installed.
Indications
o Failure to link due to unresolved symbols
o Failure to run properly
o The command 'ldd `which convert`' lists the wrong library.
Solution
If the problem library is a shared library (.so extension) then
install your own library as a shared library. Then add the required
-L and -R options to find your shared library at both link and run
time. For example, if your library is installed in /usr/local/lib:
configure LDFLAGS='-L/usr/local/lib -R/usr/local/lib'
Problem
An outdated libtiff.so (libtiff.so.3) is installed in
/usr/openwin/lib. This library may be used by accident rather than
the intended libtiff.so, or libtiff.a. In particular, the linker
generally considers linking against a shared library before it
considers static libraries, so the system libtiff.so may be used
even though there is an installed libtiff.a earlier in the linker
search path.
Indications
ImageMagick fails to link or load TIFF files.
Solution
o Install libtiff as a shared library, and make sure that LDFLAGS
contains the required -L and -R options to find your shared
library at both link and run time. For example, if libtiff.so is
installed in /usr/local/lib:
configure LDFLAGS='-L/usr/local/lib -R/usr/local/lib'
or
o Remove /usr/openwin/lib/libtiff.so.3. Note that if you take this
step, some tools like 'imagetool' and 'pageview' will stop working.
Problem
When using gcc 3.0.X, configure decides that the compiler is insufficient
to compile Magick++.
Indications
Fails ISO C++ test.
Solution
The problem is due to gcc provided headers undefining
Solaris-provided defines for 64-bit versions of stdio functions. The
solution is to either configure with --disable-largefile or edit the
installed g++-v3/bits/std_cstdio.h to bracket the offending undefs
(for fgetpos, fopen, freopen, fsetpos, & tmpfile) like:
#if _FILE_OFFSET_BITS != 64
#undef fopen
#endif
or
Install gcc 3.1 (or later) instead.
Problem
A static library was used in a shared library build.
Indications
Linker prints a warning similar to:
"ld: fatal: relocations remain against allocatable but non-writable
sections"
Solution
All libraries used in a shared library build *must* also be shared
libraries. Check all libraries referenced in the libtool link
command line and verify that all of the referenced libraries are
indeed shared libraries. All system libraries are available as
shared libraries so it is likely that any static library is locally
installed.
AIX 5.X
============
Problem
The builkd dependacy files are not created.
Indications
The build fails with missing .deps/source.PLO errors.
Solution
Add --disable-dependency-tracking to your configure command line.