UNIX
Compilation |
-
Type:
gzip -dc ImageMagick-5.2.2.tar.gz | tar xvf -
cd ImageMagick-5.2.2
-
If you do not have gunzip, it is available on prep.ai.mit.edu.
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 specified, the definition QuantumLeap is applied when
ImageMagick is built, allowing RGBA values to range from 0 to 65535 rather
than 0 to 255. 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 delegates.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 delegates.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.
-
To confirm your build of the ImageMagick distribution was successful,
type:
display
-
If the program faults make sure that you may have inadvertingly linked
to an older version of the libMagick library. In this case type
cd ImageMagick/magick
make install
cd ..
make
If the image colors are not correct use this command
display -visual default
-
You can find other example images in the images directory.
For additional information, see the manual pages for these ImageMagick
utilities
Also read the ImageMagick Frequently Asked
Questions This is a required reading. Most of the questions I get via
electronic mail are answered in this document.
-
Place display X application defaults
in
/usr/lib/X11/app-defaults/Display. Use the appropriate name for
other clients (e.g. Animate, Montage, etc). To execute display
from as a menu item of any window manager (olwm, mwm, twm, etc), use
display logo:Untitled