cristy | ebe41ab | 2010-01-14 02:58:18 +0000 | [diff] [blame] | 1 | Download & Unpack |
| 2 | |
| 3 | ImageMagick builds on a variety of Unix and Unix-like operating systems |
| 4 | including Linux, Solaris, FreeBSD, Mac OS X, and others. A compiler is |
| 5 | required and fortunately almost all modern Unix systems have one. Download |
| 6 | ImageMagick.tar.gz from ftp.imagemagick.org or its mirrors and verify the |
| 7 | distribution against its message digest. |
| 8 | |
| 9 | Unpack the distribution it with this command: |
| 10 | |
| 11 | $magick> tar xvfz ImageMagick.tar.gz |
| 12 | |
| 13 | Now that you have the ImageMagick Unix/Linux source distribution unpacked, |
| 14 | let's configure it. |
| 15 | |
| 16 | Configure |
| 17 | |
| 18 | The configure script looks at your environment and decides what it can cobble |
| 19 | together to get ImageMagick compiled and installed on your system. This |
| 20 | includes finding a compiler, where your compiler header files are located |
| 21 | (e.g. stdlib.h), and if any delegate libraries are available for ImageMagick |
| 22 | to use (e.g. JPEG, PNG, TIFF, etc.). If you are willing to accept configure's |
| 23 | default options, and build from within the source directory, you can simply |
| 24 | type: |
| 25 | |
Cristy | 3607cc2 | 2016-12-11 17:42:56 -0500 | [diff] [blame] | 26 | $magick> cd ImageMagick-7.0.4 |
cristy | ebe41ab | 2010-01-14 02:58:18 +0000 | [diff] [blame] | 27 | $magick> ./configure |
| 28 | |
| 29 | Watch the configure script output to verify that it finds everything that |
| 30 | you think it should. Pay particular attention to the last lines of the script |
| 31 | output. For example, here is a recent report from our system: |
| 32 | |
| 33 | ImageMagick is configured as follows. Please verify that this configuration |
| 34 | matches your expectations. |
| 35 | |
| 36 | Host system type: x86_64-unknown-linux-gnu |
| 37 | Build system type: x86_64-unknown-linux-gnu |
| 38 | |
| 39 | Option Value |
| 40 | ---------------------------------------------------------------------------- |
| 41 | Shared libraries --enable-shared=yes yes |
| 42 | Static libraries --enable-static=yes yes |
| 43 | Module support --with-modules=yes yes |
| 44 | GNU ld --with-gnu-ld=yes yes |
| 45 | Quantum depth --with-quantum-depth=16 16 |
| 46 | High Dynamic Range Imagery |
| 47 | --enable-hdri=no no |
| 48 | |
| 49 | Delegate Configuration: |
| 50 | BZLIB --with-bzlib=yes yes |
| 51 | Autotrace --with-autotrace=yes yes |
| 52 | DJVU --with-djvu=yes no |
| 53 | DPS --with-dps=yes no |
| 54 | FlashPIX --with-fpx=yes no |
| 55 | FontConfig --with-fontconfig=yes yes |
| 56 | FreeType --with-freetype=yes yes |
| 57 | GhostPCL None pcl6 (unknown) |
| 58 | GhostXPS None gxps (unknown) |
| 59 | Ghostscript None gs (8.63) |
| 60 | result_ghostscript_font_dir='none' |
| 61 | Ghostscript fonts --with-gs-font-dir=default |
| 62 | Ghostscript lib --with-gslib=yes no (failed tests) |
| 63 | Graphviz --with-gvc=yes yes |
| 64 | JBIG --with-jbig= no |
| 65 | JPEG v1 --with-jpeg=yes yes |
| 66 | JPEG-2000 --with-jp2=yes yes |
cristy | 6e5802e | 2011-05-24 22:44:07 +0000 | [diff] [blame] | 67 | LCMS v1 --with-lcms=yes yes |
| 68 | LCMS v2 --with-lcms2=yes yes |
cristy | ebe41ab | 2010-01-14 02:58:18 +0000 | [diff] [blame] | 69 | LQR --with-lqr=yes no |
| 70 | Magick++ --with-magick-plus-plus=yes yes |
| 71 | OpenEXR --with-openexr=yes yes |
| 72 | PERL --with-perl=yes /usr/bin/perl |
| 73 | PNG --with-png=yes yes |
| 74 | RSVG --with-rsvg=yes yes |
| 75 | TIFF --with-tiff=yes yes |
| 76 | result_windows_font_dir='none' |
| 77 | Windows fonts --with-windows-font-dir= |
| 78 | WMF --with-wmf=yes yes |
| 79 | X11 --with-x= yes |
| 80 | XML --with-xml=yes yes |
| 81 | ZLIB --with-zlib=yes yes |
| 82 | |
| 83 | X11 Configuration: |
| 84 | X_CFLAGS = |
| 85 | X_PRE_LIBS = -lSM -lICE |
| 86 | X_LIBS = |
| 87 | X_EXTRA_LIBS = |
| 88 | |
| 89 | Options used to compile and link: |
| 90 | PREFIX = /usr/local |
| 91 | EXEC-PREFIX = /usr/local |
| 92 | VERSION = 6.4.8 |
| 93 | CC = gcc -std=gnu99 |
| 94 | CFLAGS = -fopenmp -g -O2 -Wall -W -pthread |
| 95 | MAGICK_CFLAGS = -fopenmp -g -O2 -Wall -W -pthread |
| 96 | CPPFLAGS = -I/usr/local/include/ImageMagick |
| 97 | PCFLAGS = -fopenmp |
| 98 | DEFS = -DHAVE_CONFIG_H |
| 99 | LDFLAGS = -lfreetype |
| 100 | MAGICK_LDFLAGS = -L/usr/local/lib -lfreetype |
| 101 | LIBS = -lMagickCore -llcms -ltiff -lfreetype -ljpeg |
| 102 | -lfontconfig -lXext -lSM -lICE -lX11 -lXt -lbz2 -lz |
| 103 | -lm -lgomp -lpthread -lltdl |
| 104 | CXX = g++ |
| 105 | CXXFLAGS = -g -O2 -Wall -W -pthread |
| 106 | |
| 107 | You can influence choice of compiler, compilation flags, or libraries of the |
| 108 | configure script by setting initial values for variables in the configure |
| 109 | command line. These include, among others: |
| 110 | |
| 111 | CC |
| 112 | Name of C compiler (e.g. cc -Xa) to use. |
cristy | 3ed852e | 2009-09-05 21:47:34 +0000 | [diff] [blame] | 113 | |
cristy | ebe41ab | 2010-01-14 02:58:18 +0000 | [diff] [blame] | 114 | CXX |
| 115 | Name of C++ compiler to use (e.g. CC). |
cristy | 3ed852e | 2009-09-05 21:47:34 +0000 | [diff] [blame] | 116 | |
cristy | ebe41ab | 2010-01-14 02:58:18 +0000 | [diff] [blame] | 117 | CFLAGS |
| 118 | Compiler flags (e.g. -g -O2) to compile C code. |
cristy | 3ed852e | 2009-09-05 21:47:34 +0000 | [diff] [blame] | 119 | |
cristy | ebe41ab | 2010-01-14 02:58:18 +0000 | [diff] [blame] | 120 | CXXFLAGS |
| 121 | Compiler flags (e.g. -g -O2) to compile C++ code. |
cristy | 3ed852e | 2009-09-05 21:47:34 +0000 | [diff] [blame] | 122 | |
cristy | ebe41ab | 2010-01-14 02:58:18 +0000 | [diff] [blame] | 123 | CPPFLAGS |
| 124 | Include paths (.e.g. -I/usr/local) to look for header files. |
cristy | 3ed852e | 2009-09-05 21:47:34 +0000 | [diff] [blame] | 125 | |
cristy | ebe41ab | 2010-01-14 02:58:18 +0000 | [diff] [blame] | 126 | LDFLAGS |
| 127 | Library paths (.e.g. -L/usr/local) to look for libraries systems that |
| 128 | support the notion of a library run-path may require an additional |
| 129 | argument in order to find shared libraries at run time. For example, |
| 130 | the Solaris linker requires an argument of the form -R/path. Some |
| 131 | Linux systems will work with -rpath /usr/local/lib, while some other |
| 132 | Linux systems who's gcc does not pass -rpath to the linker, require |
| 133 | an argument of the form -Wl,-rpath,/usr/local/lib. |
cristy | 3ed852e | 2009-09-05 21:47:34 +0000 | [diff] [blame] | 134 | |
cristy | ebe41ab | 2010-01-14 02:58:18 +0000 | [diff] [blame] | 135 | LIBS |
| 136 | Extra libraries (.e.g. -l/usr/local/lib) required to link. |
| 137 | |
| 138 | Here is an example of setting configure variables from the command line: |
| 139 | |
| 140 | $magick> ./configure CC=c99 CFLAGS=-O2 LIBS=-lposix |
| 141 | |
| 142 | Any variable (e.g. CPPFLAGS or LDFLAGS) which requires a directory path must |
| 143 | specify an absolute path rather than a relative path. |
| 144 | |
| 145 | Configure can usually find the X include and library files automagically, |
| 146 | but if it doesn't, you can use the --x-includes=path and --x-libraries=path |
| 147 | options to specify their locations. |
| 148 | |
| 149 | The configure script provides a number of ImageMagick specific |
| 150 | options. When disabling an option --disable-something is equivalent to |
| 151 | specifying --enable-something=no and --without-something is equivalent to |
| 152 | --with-something=no. The configure options are as follows (execute configure |
| 153 | --help to see all options). |
| 154 | |
| 155 | ImageMagick options represent either features to be enabled, disabled, |
| 156 | or packages to be included in the build. When a feature is enabled (via |
| 157 | --enable-something), it enables code already present in ImageMagick. When a |
| 158 | package is enabled (via --with-something), the configure script will search |
| 159 | for it, and if is properly installed and ready to use (headers and built |
| 160 | libraries are found by compiler) it will be included in the build. The |
| 161 | configure script is delivered with all features disabled and all packages |
| 162 | enabled. In general, the only reason to disable a package is if a package |
| 163 | exists but it is unsuitable for the build (perhaps an old version or not |
| 164 | compiled with the right compilation flags). |
| 165 | |
| 166 | Here are the optional features you can configure: |
| 167 | |
| 168 | --enable-shared |
| 169 | build the shared libraries and support for loading coder and process |
| 170 | modules. Shared libraries are preferred because they allow programs |
| 171 | to share common code, making the individual programs much smaller. In |
| 172 | addition shared libraries are required in order for PerlMagick to be |
| 173 | dynamically loaded by an installed PERL (otherwise an additional PERL |
| 174 | (PerlMagick) must be installed. |
| 175 | |
| 176 | ImageMagick built with delegates (see MAGICK PLUG-INS below) can pose |
| 177 | additional challenges. If ImageMagick is built using static libraries (the |
| 178 | default without --enable-shared) then delegate libraries may be built as |
| 179 | either static libraries or shared libraries. However, if ImageMagick is |
| 180 | built using shared libraries, then all delegate libraries must also be |
| 181 | built as shared libraries. Static libraries usually have the extension |
| 182 | .a, while shared libraries typically have extensions like .so, .sa, or |
| 183 | .dll. Code in shared libraries normally must compiled using a special |
| 184 | compiler option to produce Position Independent Code (PIC). The only |
| 185 | time this not necessary is if the platform compiles code as PIC by |
| 186 | default. |
| 187 | |
| 188 | PIC compilation flags differ from vendor to vendor (gcc's is |
| 189 | -fPIC). However, you must compile all shared library source with the |
| 190 | same flag (for gcc use -fPIC rather than -fpic). While static libraries |
| 191 | are normally created using an archive tool like ar, shared libraries |
| 192 | are built using special linker or compiler options (e.g. -shared for gcc). |
| 193 | |
| 194 | If --enable-shared is not specified, a new PERL interpreter (PerlMagick) |
| 195 | is built which is statically linked against the PerlMagick extension. This |
| 196 | new interpreter is installed into the same directory as the ImageMagick |
| 197 | utilities. If --enable-shared is specified, the PerlMagick extension is |
| 198 | built as a dynamically loadable object which is loaded into your current |
| 199 | PERL interpreter at run-time. Use of dynamically-loaded extensions is |
| 200 | preferable over statically linked extensions so use --enable-shared if |
| 201 | possible (note that all libraries used with ImageMagick must be shared |
| 202 | libraries!). |
| 203 | |
| 204 | --disable-static |
| 205 | static archive libraries (with extension .a) are not built. If you |
| 206 | are building shared libraries, there is little value to building static |
| 207 | libraries. Reasons to build static libraries include: 1) they can be |
| 208 | easier to debug; 2) clients do not have external dependencies (i.e. |
| 209 | libMagick.so); 3) building PIC versions of the delegate libraries may |
| 210 | take additional expertise and effort; 4) you are unable to build shared |
| 211 | libraries. |
| 212 | |
| 213 | --disable-installed |
| 214 | disable building an installed ImageMagick (default enabled). |
| 215 | |
| 216 | By default the ImageMagick build is configured to formally install |
| 217 | into a directory tree. This the most secure and reliable way to install |
| 218 | ImageMagick. Use this option to configure ImageMagick so that it doesn't |
| 219 | use hard-coded paths and locates support files by computing an offset path |
| 220 | from the executable (or from the location specified by the MAGICK_HOME |
| 221 | environment variable. The uninstalled configuration is ideal for binary |
| 222 | distributions which are expected to extract and run in any location. |
| 223 | |
| 224 | --enable-ccmalloc |
| 225 | enable 'ccmalloc' memory debug support (default disabled). |
| 226 | |
| 227 | --enable-prof |
| 228 | enable 'prof' profiling support (default disabled). |
| 229 | |
| 230 | --enable-gprof |
| 231 | enable 'gprof' profiling support (default disabled). |
| 232 | |
| 233 | --enable-gcov |
| 234 | |
| 235 | enable 'gcov' profiling support (default disabled). |
| 236 | --disable-openmp |
| 237 | disable OpenMP (default enabled). |
| 238 | |
| 239 | Certain ImageMagick algorithms, for example convolution, can achieve |
| 240 | a significant speed-up with the assistance of the OpenMP API when |
| 241 | running on modern dual and quad-core processors. |
| 242 | |
| 243 | --disable-largefile |
| 244 | disable support for large (64 bit) file offsets. |
| 245 | |
| 246 | By default, ImageMagick is compiled with support for large files (> |
| 247 | 2GB on a 32-bit CPU) if the operating system supports large files. Some |
| 248 | applications which use the ImageMagick library may also require support |
| 249 | for large files. By disabling support for large files via |
| 250 | --disable-largefile, dependent applications do not require special |
| 251 | compilation options for large files in order to use the library. |
| 252 | |
| 253 | Here are the optional packages you can configure: |
cristy | 71d8c20 | 2012-03-20 17:05:01 +0000 | [diff] [blame] | 254 | |
| 255 | --enable-legacy-support |
| 256 | install legacy command-line utilities (default disabled). |
cristy | ebe41ab | 2010-01-14 02:58:18 +0000 | [diff] [blame] | 257 | |
| 258 | --with-quantum-depth |
| 259 | number of bits in a pixel quantum (default 16). |
| 260 | |
| 261 | Use this option to specify the number of bits to use per pixel quantum |
| 262 | (the size of the red, green, blue, and alpha pixel components). For |
| 263 | example, --with-quantum-depth=8 builds ImageMagick using 8-bit quantums. |
| 264 | Most computer display adapters use 8-bit quantums. Currently supported |
| 265 | arguments are 8, 16, or 32. We recommend the default of 16 because |
| 266 | some image formats support 16 bits-per-pixel. However, this option is |
| 267 | important in determining the overall run-time performance of ImageMagick. |
| 268 | |
| 269 | The number of bits in a quantum determines how many values it may |
| 270 | contain. Each quantum level supports 256 times as many values as the |
| 271 | previous level. The following table shows the range available for various |
| 272 | quantum sizes. |
| 273 | |
| 274 | Quantum Depth Valid Range (Decimal) Valid Range (Hex) |
| 275 | 8 0-255 00-FF |
| 276 | 16 0-65535 0000-FFFF |
| 277 | 32 0-4294967295 00000000-FFFFFFFF |
| 278 | |
| 279 | Larger pixel quantums can cause ImageMagick to run more slowly and to |
| 280 | require more memory. For example, using sixteen-bit pixel quantums can |
| 281 | cause ImageMagick to run 15% to 50% slower (and take twice as much memory) |
| 282 | than when it is built to support eight-bit pixel quantums. |
| 283 | |
| 284 | The amount of virtual memory consumed by an image can be computed by |
| 285 | the equation (5 * Quantum Depth * Rows * Columns) / 8. This an important |
| 286 | consideration when resources are limited, particularly since processing |
| 287 | an image may require several images to be in memory at one time. The |
| 288 | following table shows memory consumption values for a 1024x768 image: |
| 289 | |
| 290 | Quantum Depth Virtual Memory |
| 291 | 8 3MB |
| 292 | 16 8MB |
| 293 | 32 15MB |
| 294 | |
| 295 | --enable-hdri |
| 296 | accurately represent the wide range of intensity levels (experimental). |
| 297 | |
| 298 | --enable-osx-universal-binary |
| 299 | build a universal binary on OS X. |
| 300 | |
| 301 | --without-modules |
| 302 | disable support for dynamically loadable modules. |
| 303 | |
| 304 | Image coders and process modules are built as loadable modules which are |
| 305 | installed under the directory [prefix]/lib/ImageMagick-X.X.X/modules-QN |
| 306 | (where 'N' equals 8, 16, or 32 depending on the quantum depth) in the |
| 307 | subdirectories coders and filters respectively. The modules build option |
| 308 | is only available in conjunction with --enable-shared. If --enable-shared |
| 309 | is not also specified, support for building modules is disabled. Note that |
| 310 | if --enable-shared and --disable-modules are specified, the module loader |
| 311 | is active (allowing extending an installed ImageMagick by simply copying |
| 312 | a module into place) but ImageMagick itself is not built using modules. |
| 313 | |
| 314 | --with-cache |
| 315 | set pixel cache threshold (defaults to available memory). |
| 316 | |
| 317 | Specify a different image pixel cache threshold with this option. This |
| 318 | sets the maximum amount of heap memory that ImageMagick is allowed to |
| 319 | consume before switching to using memory-mapped temporary files to store |
| 320 | raw pixel data. |
| 321 | |
| 322 | --without-threads |
| 323 | disable threads support. |
| 324 | |
| 325 | By default, the ImageMagick library is compiled with multi-thread |
| 326 | support. If this undesirable, specify --without-threads. |
| 327 | |
| 328 | --with-frozenpaths |
| 329 | enable frozen delegate paths. |
| 330 | |
| 331 | Normally, external program names are substituted into the delegates.xml |
| 332 | configuration file without full paths. Specify this option to enable |
| 333 | saving full paths to programs using locations determined by configure. |
| 334 | This useful for environments where programs are stored under multiple |
| 335 | paths, and users may use different PATH settings than the person who |
| 336 | builds ImageMagick. |
| 337 | |
| 338 | --without-magick-plus-plus |
| 339 | disable build/install of Magick++. |
| 340 | |
| 341 | Disable building Magick++, the C++ application programming interface |
| 342 | to ImageMagick. A suitable C++ compiler is required in order to build |
| 343 | Magick++. Specify the CXX configure variable to select the C++ compiler |
| 344 | to use (default g++), and CXXFLAGS to select the desired compiler |
| 345 | optimization and debug flags (default -g -O2). Antique C++ compilers |
| 346 | will normally be rejected by configure tests so specifying this option |
| 347 | should only be necessary if Magick++ fails to compile. |
cristy | 8eb4a67 | 2012-09-08 23:45:06 +0000 | [diff] [blame] | 348 | |
| 349 | --with-package-release-name |
| 350 | encode this name into the shared library name (see libtools -release |
| 351 | option). |
cristy | ebe41ab | 2010-01-14 02:58:18 +0000 | [diff] [blame] | 352 | |
| 353 | --without-perl |
| 354 | disable build/install of PerlMagick, or |
| 355 | |
| 356 | By default, PerlMagick is conveniently compiled and installed as part |
| 357 | of ImageMagick's normal configure, make, sudo make install process. When |
| 358 | --without-perl is specified, you must first install ImageMagick, change to |
| 359 | the PerlMagick subdirectory, build, and finally install PerlMagick. Note, |
| 360 | PerlMagick is configured even if --without-perl is specified. If the |
| 361 | argument --with-perl=/path/to/perl is supplied, /../path/to/perl is be |
| 362 | taken as the PERL interpreter to use. This important in case the perl |
| 363 | executable in your PATH is not PERL5, or is not the PERL you want to use. |
| 364 | |
| 365 | --with-perl=PERL |
| 366 | use specified Perl binary to configure PerlMagick. |
| 367 | |
| 368 | --with-perl-options=OPTIONS |
| 369 | options to pass on command-line when generating PerlMagick's Makefile |
| 370 | from Makefile.PL. |
| 371 | |
| 372 | The PerlMagick module is normally installed using the Perl interpreter's |
| 373 | installation PREFIX, rather than ImageMagick's. If ImageMagick's |
| 374 | installation prefix is not the same as PERL's PREFIX, then you |
| 375 | may find that PerlMagick's sudo make install step tries to install |
| 376 | into a directory tree that you don't have write permissions to. This |
| 377 | common when PERL is delivered with the operating system or on Internet |
| 378 | Service Provider (ISP) web servers. If you want PerlMagick to install |
| 379 | elsewhere, then provide a PREFIX option to PERL's configuration step |
| 380 | via "--with-perl-options=PREFIX=/some/place". Other options accepted by |
| 381 | MakeMaker are 'LIB', 'LIBPERL_A', 'LINKTYPE', and 'OPTIMIZE'. See the |
| 382 | ExtUtils::MakeMaker(3) manual page for more information on configuring |
| 383 | PERL extensions. |
| 384 | |
| 385 | --without-bzlib |
| 386 | disable BZLIB support. |
| 387 | |
| 388 | --without-dps |
| 389 | disable Display Postscript support. |
| 390 | |
| 391 | --with-fpx |
| 392 | enable FlashPIX support. |
| 393 | |
| 394 | --without-freetype |
| 395 | disable TrueType support. |
| 396 | |
| 397 | --with-gslib |
| 398 | enable Ghostscript library support. |
| 399 | |
| 400 | --without-jbig |
| 401 | disable JBIG support. |
| 402 | |
| 403 | --without-jpeg |
| 404 | disable JPEG support. |
| 405 | |
| 406 | --without-jp2 |
| 407 | disable JPEG v2 support. |
| 408 | |
| 409 | --without-lcms |
cristy | 6e5802e | 2011-05-24 22:44:07 +0000 | [diff] [blame] | 410 | disable lcms (v1.1X) support |
| 411 | |
| 412 | --without-lcms2 |
| 413 | disable lcms (v2.X) support |
cristy | ebe41ab | 2010-01-14 02:58:18 +0000 | [diff] [blame] | 414 | |
cristy | fbb0ef0 | 2010-12-19 02:32:11 +0000 | [diff] [blame] | 415 | --without-lzma |
| 416 | disable LZMA support. |
| 417 | |
cristy | ebe41ab | 2010-01-14 02:58:18 +0000 | [diff] [blame] | 418 | --without-png |
| 419 | disable PNG support. |
| 420 | |
| 421 | --without-tiff |
| 422 | disable TIFF support. |
| 423 | |
| 424 | --without-wmf |
| 425 | disable WMF support. |
| 426 | |
| 427 | --with-fontpath |
| 428 | prepend to default font search path. |
| 429 | |
| 430 | --with-gs-font-dir |
| 431 | directory containing Ghostscript fonts. |
| 432 | |
| 433 | Specify the directory containing the Ghostscript Postscript Type 1 font |
| 434 | files (e.g. n022003l.pfb) so that they can be rendered using the FreeType |
| 435 | library. If the font files are installed using the default Ghostscript |
| 436 | installation paths (${prefix}/share/ghostscript/fonts), they should |
| 437 | be discovered automagically by configure and specifying this option is |
| 438 | not necessary. Specify this option if the Ghostscript fonts fail to be |
| 439 | located automagically, or the location needs to be overridden. |
| 440 | |
| 441 | --with-windows-font-dir |
| 442 | directory containing MS-Windows fonts. |
| 443 | |
| 444 | Specify the directory containing MS-Windows-compatible fonts. This not |
| 445 | necessary when ImageMagick is running under MS-Windows. |
| 446 | |
| 447 | --without-xml |
| 448 | disable XML support. |
| 449 | |
| 450 | --without-zlib |
| 451 | disable ZLIB support. |
| 452 | |
| 453 | --without-x |
| 454 | don't use the X Window System. |
| 455 | |
| 456 | By default, ImageMagick uses the X11 delegate libraries if they are |
| 457 | available. When --without-x is specified, use of X11 is disabled. The |
| 458 | display, animate, and import sub-commands are not included. The remaining |
| 459 | sub-commands have reduced functionality such as no access to X11 fonts |
| 460 | (consider using Postscript or TrueType fonts instead). |
| 461 | |
| 462 | --with-share-path=DIR |
| 463 | Alternate path to share directory (default share/ImageMagick). |
| 464 | |
| 465 | --with-libstdc=DIR |
| 466 | use libstdc++ in DIR (for GNU C++). |
| 467 | |
cristy | 3ed852e | 2009-09-05 21:47:34 +0000 | [diff] [blame] | 468 | While configure is designed to ease installation of ImageMagick, it often |
| 469 | discovers problems that would otherwise be encountered later when compiling |
| 470 | ImageMagick. The configure script tests for headers and libraries by |
| 471 | executing the compiler (CC) with the specified compilation flags (CFLAGS), |
| 472 | pre-processor flags (CPPFLAGS), and linker flags (LDFLAGS). Any errors are |
cristy | ebe41ab | 2010-01-14 02:58:18 +0000 | [diff] [blame] | 473 | logged to the file config.log. If configure fails to discover a header or |
| 474 | library please review this log file to determine why, however, please be |
| 475 | aware that *errors in the config.log are normal* because configure works by |
| 476 | trying something and seeing if it fails. An error in config.log is only a |
| 477 | problem if the test should have passed on your system. |
| 478 | |
cristy | 3ed852e | 2009-09-05 21:47:34 +0000 | [diff] [blame] | 479 | Common causes of configure failures are: 1) a delegate header is not in the |
| 480 | header include path (CPPFLAGS -I option); 2) a delegate library is not in |
cristy | ebe41ab | 2010-01-14 02:58:18 +0000 | [diff] [blame] | 481 | the linker search/run path (LDFLAGS -L/-R option); 3) a delegate library is |
| 482 | missing a function (old version?); or 4) compilation environment is faulty. |
| 483 | |
cristy | 3ed852e | 2009-09-05 21:47:34 +0000 | [diff] [blame] | 484 | If all reasonable corrective actions have been tried and the problem appears |
| 485 | be due to a flaw in the configure script, please send a bug report to the |
cristy | ebe41ab | 2010-01-14 02:58:18 +0000 | [diff] [blame] | 486 | ImageMagick Defect Support Forum. All bug reports should contain the operating |
| 487 | system type (as reported by uname -a) and the compiler/compiler-version. A |
| 488 | copy of the configure script output and/or the relevant portion of config.log |
| 489 | file may be valuable in order to find the problem. If you post portions |
| 490 | of config.log, please also send a script of the configure output and a |
cristy | 3ed852e | 2009-09-05 21:47:34 +0000 | [diff] [blame] | 491 | description of what you expected to see (and why) so the failure you are |
| 492 | observing can be identified and resolved. |
cristy | ebe41ab | 2010-01-14 02:58:18 +0000 | [diff] [blame] | 493 | |
| 494 | ImageMagick is now configured and ready to build |
| 495 | |
| 496 | Build |
| 497 | |
| 498 | Once ImageMagick is configured, these standard build targets are available |
| 499 | from the generated make files: |
| 500 | |
| 501 | make |
| 502 | build ImageMagick. |
| 503 | |
| 504 | sudo make install |
| 505 | install ImageMagick. |
| 506 | |
cristy | 3ed852e | 2009-09-05 21:47:34 +0000 | [diff] [blame] | 507 | make check |
cristy | ebe41ab | 2010-01-14 02:58:18 +0000 | [diff] [blame] | 508 | Run tests using the installed ImageMagick (sudo make install must be |
| 509 | done first). Ghostscript is a prerequisite, otherwise the EPS, PS, |
| 510 | and PDF tests will fail. |
| 511 | |
| 512 | make clean |
| 513 | Remove everything in the build directory created by make. |
| 514 | |
| 515 | make distclean |
| 516 | remove everything in the build directory created by configure and |
| 517 | make. This useful if you want to start over from scratch. |
| 518 | |
| 519 | make uninstall |
| 520 | Remove all files from the system which are (or would be) installed by sudo |
| 521 | make install using the current configuration. Note that this target is |
| 522 | imperfect for PerlMagick since Perl no longer supports an uninstall |
| 523 | target. |
| 524 | |
dirk | cab899e | 2015-07-31 06:38:02 +0000 | [diff] [blame] | 525 | In most cases you will simply want to compile ImageMagick with this command: |
cristy | ebe41ab | 2010-01-14 02:58:18 +0000 | [diff] [blame] | 526 | |
| 527 | $magick> make |
| 528 | |
| 529 | Once built, you can optionally install ImageMagick on your system as |
| 530 | discussed below. |
| 531 | |
| 532 | Install |
| 533 | |
| 534 | Now that ImageMagick is configured and built, type: |
| 535 | |
| 536 | $magick> make install |
| 537 | |
| 538 | to install it. |
| 539 | |
| 540 | By default, ImageMagick is installs binaries in /../usr/local/bin, libraries |
| 541 | in /../usr/local/lib, header files in /../usr/local/include and documentation |
| 542 | in /../usr/local/share. You can specify an alternative installation prefix |
| 543 | other than /../usr/local by giving configure the option --prefix=PATH. This |
| 544 | valuable in case you don't have privileges to install under the default |
| 545 | paths or if you want to install in the system directories instead. |
| 546 | |
| 547 | To confirm your installation of the ImageMagick distribution was successful, |
| 548 | ensure that the installation directory is in your executable search path |
| 549 | and type: |
| 550 | |
| 551 | $magick> display |
| 552 | |
| 553 | The ImageMagick logo is displayed on your X11 display. |
| 554 | |
| 555 | To verify the ImageMagick build configuration, type: |
| 556 | |
| 557 | $magick> identify -list configure |
| 558 | |
| 559 | To list which image formats are supported , type: |
| 560 | |
| 561 | $magick> identify -list format |
| 562 | |
| 563 | For a more comprehensive test, you run the ImageMagick test suite by typing: |
| 564 | |
| 565 | $magick> make check |
| 566 | |
| 567 | Ghostscript is a prerequisite, otherwise the EPS, PS, and PDF tests will |
| 568 | fail. Note that due to differences between the developer's environment and |
| 569 | your own it is possible that a few tests may fail even though the results are |
| 570 | ok. Differences between the developer's environment environment and your own |
| 571 | may include the compiler, the CPU type, and the library versions used. The |
| 572 | ImageMagick developers use the current release of all dependent libraries. |
cristy | 3ed852e | 2009-09-05 21:47:34 +0000 | [diff] [blame] | 573 | |
cristy | ebe41ab | 2010-01-14 02:58:18 +0000 | [diff] [blame] | 574 | Linux-specific Build instructions |
| 575 | |
| 576 | Download ImageMagick.src.rpm from ftp.imagemagick.org or its mirrors and |
| 577 | verify the distribution against its message digest. |
| 578 | |
| 579 | Build ImageMagick with this command: |
| 580 | |
| 581 | $magick> rpmbuild --rebuild ImageMagick.src.rpm |
| 582 | |
| 583 | After the build you, locate the RPMS folder and install the ImageMagick |
| 584 | binary RPM distribution: |
| 585 | |
cristy | df1e382 | 2012-03-20 00:48:54 +0000 | [diff] [blame] | 586 | $magick> rpm -ivh ImageMagick-7.0.0-?.*.rpm |
cristy | ebe41ab | 2010-01-14 02:58:18 +0000 | [diff] [blame] | 587 | |
| 588 | MinGW-specific Build instructions |
| 589 | |
| 590 | Although you can download and install delegate libraries yourself, many |
| 591 | are already available in the GnuWin32 distribution. Download and install |
| 592 | whichever delegate libraries you require such as JPEG, PNG, TIFF, etc. Make |
| 593 | sure you specify the development headers when you install a package. Next |
| 594 | type, |
| 595 | |
cristy | df1e382 | 2012-03-20 00:48:54 +0000 | [diff] [blame] | 596 | $magick> tar jxvf ImageMagick-7.0.0-?.tar.bz2 |
| 597 | $magick> cd ImageMagick-7.0.0 |
cristy | ebe41ab | 2010-01-14 02:58:18 +0000 | [diff] [blame] | 598 | $magick> export CPPFLAGS="-Ic:/Progra~1/GnuWin32/include" |
| 599 | $magick> export LDFLAGS="-Lc:/Progra~1/GnuWin32/lib" |
| 600 | $magick> ./configure --without-perl |
| 601 | $magick> make $magick> sudo make install |
| 602 | |
| 603 | Dealing with Unexpected Problems |
| 604 | |
| 605 | Chances are the download, configure, build, and install of ImageMagick went |
| 606 | flawlessly as it is intended, however, certain systems and environments may |
| 607 | cause one or more steps to fail. We discuss a few problems we've run across |
| 608 | and how to take corrective action to ensure you have a working release |
| 609 | of ImageMagick |
| 610 | |
| 611 | Build Problems |
| 612 | |
| 613 | If the build complains about missing dependencies (e.g. .deps/source.PLO), |
| 614 | add --disable-dependency-tracking to your configure command line. |
| 615 | |
| 616 | Some systems may fail to link at build time due to unresolved symbols. Try |
| 617 | adding the LDFLAGS to the configure command line: |
| 618 | |
| 619 | $magick> configure LDFLAGS='-L/usr/local/lib -R/usr/local/lib' |
| 620 | |
| 621 | Dynamic Linker Run-time Bindings |
| 622 | |
| 623 | On some systems, ImageMagick may not find its shared library, libMagick.so. Try |
| 624 | running the ldconfig with the library path: |
| 625 | |
| 626 | $magick> /sbin/ldconfig /usr/local/lib |
| 627 | |
| 628 | Solaris and Linux systems have the ldd command which is useful to track which |
| 629 | libraries ImageMagick depends on: |
| 630 | |
| 631 | $magick> ldd `which convert` |
| 632 | |
| 633 | Delegate Libraries |
| 634 | |
| 635 | On occasion you may receive these warnings: |
| 636 | |
| 637 | no decode delegate for this image format |
| 638 | no encode delegate for this image format |
| 639 | |
| 640 | This exception indicates that an external delegate library or its headers |
| 641 | were not available when ImageMagick was built. To add support for the image |
| 642 | format, download and install the requisite delegate library and its header |
| 643 | files and reconfigure, rebuild, and reinstall ImageMagick. As an example, |
| 644 | lets add support for the JPEG image format. First we install the JPEG RPMS: |
| 645 | |
| 646 | $magick> yum install libjpeg libjpeg-devel |
| 647 | |
| 648 | Now reconfigure, rebuild, and reinstall ImageMagick. To verify JPEG is now |
| 649 | properly supported within ImageMagick, use this command: |
| 650 | |
| 651 | $magick> identify -list format |
| 652 | |
| 653 | You should see a mode of rw- associated with the JPEG tag. This mode means |
| 654 | the image can be read or written and can only support one image per image |
| 655 | file. |
| 656 | |
| 657 | PerlMagick |
| 658 | |
| 659 | If PerlMagick fails to link with a message similar to libperl.a is not found, |
| 660 | rerun configure with the --enable-shared or --enable-shared --with-modules |
| 661 | options. |