Use configure to automatically
configure, build, and install ImageMagick
.
If you are willing to accept configure's
default options, type:
./configure
and watch the configure script output to
verify that it finds everything that you think it should. If it does not,
then adjust your environment so that it does.
If you are not happy with configure's choice
of compiler, compilation flags, or libraries, you can give configure
initial values for variables by setting them in the environment. Using a
Bourne-compatible shell, you can do that on the command line like this:
CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
Or on systems that have the env
program, you can do it like this
env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
The configure variables you should be aware
of are:
CC Name of C compiler (e.g. 'cc -Xa') to use
CFLAGS Compiler flags (e.g. '-g -O2') to compile with
CPPFLAGS Include paths (-I/somedir) to look for header files
LDFLAGS Library paths (-L/somedir) to look for libraries
Systems that support the notion of a library
run-path may additionally require -R/somedir or
'-rpath /somedir' in order to find shared libraries
at run time.
LIBS Extra libraries (-lsomelib) required to link
Any variable (e.g. CPPFLAGS or LDFLAGS)
which requires a directory path must specify an absolute path rather than
a relative path.
By default, make install will install
the package's files in /usr/local/bin, /usr/local/man, etc.
You can specify an installation prefix other than /usr/local by
giving configure the option --prefix=PATH.
Configure can usually find the X include
and library files automatically, but if it doesn't, you can use the configure
options --x-includes=DIR and --x-libraries=DIR to specify
their locations.
The configure script provides a number of
ImageMagick specific options. When disabling an option --disable-something
is equivalent to specifying --enable-something=no and --without-something
is equivalent to --with-something=no. The configure options are as
follows (execute configure --help to see all options).
--enable-shared[=PKGS] build shared libraries [default=no]
--enable-static[=PKGS] build static libraries [default=yes]
--enable-lzw enable LZW support (default is no)
--enable-16bit-pixel enable 16 bit/quantum pixels (default is no)
--with-threads enable threads support
--with-cache set pixel cache threshhold (default 80MB)
--without-frozenpaths disable frozen delegate paths
--without-largefiles disable support for large (64 bit) file offsets
--without-perl disable build/install of PerlMagick
--without-bzlib disable BZLIB support
--without-dps disable Display Postscript support
--without-fpx disable FlashPIX support
--without-hdf disable HDF support
--without-jbig disable JBIG support
--without-jpeg disable JPEG support
--without-png disable PNG support
--without-tiff disable TIFF support
--without-ttf disable TrueType support
--with-ttf-fontpath set default TrueType font path (default none)
--without-xml disable XML support
--without-zlib disable ZLIB support
--with-x use the X Window System
ImageMagick options represent either features to be enabled, disabled, or
packages to be included in the build. When a feature is enabled (via
--enable-something), it enables code already present in ImageMagick.
When a package is enabled (via --with-something), the configure
script will search for it, and if is is properly installed and ready to use
(headers and built libraries are found by compiler) it will be included in
the build. The configure script is delivered with all features disabled and
all packages enabled. In general, the only reason to disable a package is
if a package exists but it is unsuitable for the build (perhaps an old version
or not compiled with the right compilation flags).
Several configure options require special
note:
- --enable-shared the shared
libraries are built. Shared libraries are valuable because they are shared
across more than one invocation of an ImageMagick or PerlMagick client.
In addition, the clients take much less disk space and shared libraries are
required in order for PERL to dynamically load the PerlMagick extension.
ImageMagick built with delegates (see
MAGICK PLUG-INS below) can pose additional challenges. You can build all
the delegates statically and link them into the ImageMagick shared library
(i.e. libMagick.so) or alternatively you can build the delegates as shared
libraries (some systems already have delegates installed as shared libraries).
Shared libraries compilation flags differ from vendor to vendor (gcc's is
-fPIC). However, you must compile all shared library source with the same
flag (for gcc use -fPIC rather than -fpic).
- --disable-static static archive
libraries (with extension .a) are not built. If you are building shared libraries,
there is little value to building static libraries. Reasons to build static
libraries include 1) they can be easier to debug; 2) the clients do not have
external dependencies (i.e. libMagick.so); 3) building PIC versions of the
delegate libraries may take additional expertise and effort; 4) you are unable
to build shared libraries.
- --with-modules image format
coders are built as loadable modules which are installed in [prefix]/lib/ImageMagick/modules/coders.
Support for modules allows the formats supported by ImageMagick to be extended
by simply adding additional modules to the module search path. The modules
option is only available in conjunction with --enable-shared. If --enable-shared
is not also specified, then support for modules is disabled.
- --enable-lzw Unisys reportedly
claims a patent on the algorithm supporting LZW compression (e.g. used by
GIF and TIFF). To avoid possibly infringing on this patent, support for LZW
is disabled by default. With LZW support, GIF files written by ImageMagick
will be much larger than expected.
- --enable-16bit-pixel By default
ImageMagick represents images internally using an eight-bit pixel quantum
(red, green, blue, and alpha component). Scientific applications, or other
specialized applications, which must ensure that the full dynamic range of
the image pixels is preserved across operations, or which must process an
image format that can represent deep pixels, may want to enable support for
sixteen-bit pixel quantums. When this option is not specified, the definition
QuantumMagick is applied when ImageMagick is built, allowing RGBA values to
range from 0 to 255 rather than 0 to 65535. Enabling this option will cause
ImageMagick to run about 30% slower.
- --without-frozenpaths By default,
the configure script will determine the location of all delegates (external
programs) and incorporate the full paths within the delegate.mgk file. This
is the default because it is assumed that the installer's environment is
appropriately configured and that the operation of ImageMagick should not
be subject to the end-user's environment. However, if it is desireable to
allow the end user to define their own environment or possible that the end
user's environment does not match the installer's environment (e.g. for binary
distributions), --without-frozenpaths may be specified so that only the delegate's
name is included in the delegate.mgk file.
- --with-threads By default,
the ImageMagick library is compiled without multi-thread support. This is
fine for the utilities, and for use in single-threaded applications. When
multi-threaded applications are to be used with the ImageMagick library,
thread safety should be selected via --with-threads. Multi-thread support
is disabled by default since a thread-safe ImageMagick may run slower (OS
dependent) due to additional locking within the C library (e.g. in malloc()).
- --with-cache Specify a different
image pixel cache threshold using the --with-cache option. When ImageMagick
will have more image pixel data in memory than the cache threshold setting,
additional images are cached on disk. Since memory is much faster than disk,
it is usually better to use memory rather than disk for the pixel cache.
On large memory machines, the cache threshold may be increased to a larger
size than the default of 80MB. Small memory machines may want to decrease
the threshold.
- --without-largefiles By default,
ImageMagick is compiled with support for large (> 2GB on a 32-bit CPU)
files if the operating system supports large files. All applications which
use the ImageMagick library must then also include support for large files.
By disabling support for large files via --without-largefiles, dependent
applications do not require special compilation options for large files in
order to use the library.
- --without-perl By default,
PerlMagick is conveniently compiled and installed in one step. When --without-perl
is specified, you must first install ImageMagick, change to the PerlMagick
subdirectory, build, and finally install PerlMagick. Note, PerlMagick is
configured even if --without-perl is specified. If --enable-shared is not
specified, a new PERL interpreter (PerlMagick) is built which is statically
linked against the PerlMagick extension. This new interpreter is installed
alongside your existing PERL interpreter. If --enable-shared is specified,
the PerlMagick extension is built as a dynamically loadable object which
is loaded into your current PERL interpreter at run-time. Use of dynamically-loaded
extensions is preferable over statically linked extensions so --enable-shared
should be specified if possible. If the argument --with-perl=/path/tto/perl
is supplied, then /path/to/perl will be taken as the PERL interpreter to
use.
- --without-x By default, ImageMagick
will use X11 libraries if they are available. When --without-x is specified,
use of X11 is disabled. The display, animate, and import programs are not
built or installed. The remaining programs have reduced functionality such
as no access to X11 fonts (consider using Postscript or TrueType fonts instead).
Building under Cygwin:
ImageMagick may be built under the Windows
Win2K/'9X Cygwin Unix-emulation environment which may be downloaded from
Cygnus. Pre-compiled X11R6.4 libraries for Cygwin are available from
NASA. Use the same procedure as for Unix except that building DLLs is
not yet supported so do not specify --enable-shared option to configure.
Dealing with configuration failures:
While configure is designed to ease installation
of ImageMagick, it often discovers problems that would otherwise be encountered
later when compiling ImageMagick. The configure script tests for headers
and libraries by executing the compiler (CC) with the specified compilation
flags (CFLAGS), pre-processor flags (CPPFLAGS), and linker flags (LDFLAGS).
Any errors are logged to the file config.log. If configure fails
to discover a header or library please review this log file to determine
why, however, please be aware that *errors in the config.log are normal*
because configure works by trying something and seeing if it fails. An error
in config.log is only a problem if the test should have worked on
your system.. After taking corrective action, be sure to remove the config.cache
file before running configure so that configure will re-inspect the environment
rather than using cached values.
Common causes of configure falures are:
1) a delegate header is not in the header include path (CPPFLAGS -I option);
2) a delegate library is not in the linker search/run path (LDFLAGS -L/-R
option); 3) a delegate library is missing a function (old version?); 4) compilation
environment is faulty.
If all reasonable corrective actions have been tried and the problem appears
to be due to a flaw in the configure script, please send a bug report to
the configure script maintainer (currently
bfriesen@simple.dallas.tx.us). All bug reports should contain the operating
system type (as reported by uname -a) and the compiler/compiler-version.
A copy of the configure script output and/or the config.log file
may be valuable in order to find the problem. If you send a config.log
, please also send a script of the configure output and a description of
what you expected to see (and why) so the failure you are observing can be
identified and resolved.