Compile ImageMagick from source with PNG support on OSX

前端 未结 1 2020
执笔经年
执笔经年 2020-12-18 05:37

I need to compile it from sources. I followed step by step instruction to build it with jpeg and png support but ImageMagick didn\'t include PNG to delegates list however jp

相关标签:
1条回答
  • 2020-12-18 06:26

    Here is how I would install ImageMagick from source on OSX.

    1. Install Xcode

    First, you are going to need the Apple compiler and development tools whatever you do. So, start the AppStore which looks like this:

    and download Xcode for free - it looks like this:

    2. Install Command Line Tools

    Once you have Xcode installed, you need to install the command-line tools (i.e. clang, clang++, make) like this:

    xcode-select --install
    

    3. Choose Your Method - homebrew or a Life of Agony

    Now you need to choose how you are going to proceed. The simplest option, by miles and miles and miles, is to use homebrew. The other method is self-descriptive.

    3a. homebrew Method

    Go to the homebrew website and copy and paste the one-liner there into your Terminal - I won't show it here because it may change and I want you and future readers to use the current command. Once homebrew is installed, you just do this to choose your ImageMagick options:

    brew options imagemagick
    
    --with-fftw
        Compile with FFTW support
    --with-fontconfig
        Build with fontconfig support
    --with-ghostscript
        Build with ghostscript support
    --with-hdri
        Compile with HDRI support
    --with-jp2
        Compile with Jpeg2000 support
    --with-liblqr
        Build with liblqr support
    --with-librsvg
        Build with librsvg support
    --with-libwmf
        Build with libwmf support
    --with-little-cms
        Build with little-cms support
    --with-little-cms2
        Build with little-cms2 support
    --with-openexr
        Build with openexr support
    --with-openmp
        Compile with OpenMP support
    --with-pango
        Build with pango support
    --with-perl
        enable build/install of PerlMagick
    --with-quantum-depth-16
        Compile with a quantum depth of 16 bit
    --with-quantum-depth-32
        Compile with a quantum depth of 32 bit
    --with-quantum-depth-8
        Compile with a quantum depth of 8 bit
    --with-webp
        Build with webp support
    --with-x11
        Build with x11 support
    --without-freetype
        Build without freetype support
    --without-jpeg
        Build without jpeg support
    --without-libpng
        Build without libpng support
    --without-libtiff
        Build without libtiff support
    --without-magick-plus-plus
        disable build/install of Magick++
    --without-opencl
        Disable OpenCL
    

    and then having selected your options, you install with

    brew install imagemagick --with-perl --with-librsvg
    

    or whatever you want. Then you are finished and you don't need to read the following torture!

    Later on, upgrades are simple:

    brew update && brew upgrade --all
    

    Problem-solving is simple:

    brew doctor
    

    Uninstallation is simple:

    brew rm imagemagick
    

    3b. Life of Agony™ Method

    Ok, I see you sadly decided on a Life of Agony™, so be it. I hope you know tar, bash, environment variables, gzip, make, curl. Now would be a good time to think again and use homebrew after all....

    Sure you want to proceed? Ok, the general idea is to decide what features you need, install the features first, then install ImageMagick.

    4. Set up a build area and environment

    Set up two directories and 2 environment vars in your $HOME/.profile. These will be the build area where you build software and the sw area where you install your local software to:

    export MSBUILD=$HOME/build
    export MSSW=$HOME/sw
    

    Now source your profile into your current session with

    . $HOME/.profile
    

    or just log out and log back in so that the variables above take effect.

    Next create the two directories:

    mkdir "$MSBUILD" "$MSSW"
    

    5. Consider Features you need

    Now consider what features you need:

    5.1 Feature = PNG Support

    If you need PNG support, you need zlib first. In your web-browser, go to the zlib website and find the name of the latest version. Then in Terminal:

    cd $MSBUILD
    curl -O -J -L http://sourceforge.net/projects/libpng/files/zlib/1.2.8/zlib-1.2.8.tar.xz/download
    

    which gets you this zlib-1.2.8.tar.xz (or similar) which you can unpack and install with:

    tar xvfJ zlib*.tar.xz          # Unzip and untar what you downloaded
    cd zlib*[0-9]                  # Change directory to wherever it unpacked to
    ./configure --prefix="$MSSW"   # Configure with the necessary prefix
    make
    make install
    

    Now you want libpng which you do with:

    curl -O -J -L http://sourceforge.net/projects/libpng/files/latest/download?source=files
    

    which gets you this (or similar):

    libpng-1.6.17.tar.xz
    

    which you install with this command:

    tar xvfJ libpng*xz             # Unpack and untar whatever you downloaded
    cd libpng*[0-9]                # Change directory to wherever it unpacked to
    ./configure --prefix="$MSSW"   # Configure with the necessary prefix
    make 
    make install
    

    5.2 Feature = TIFF Support

    If you need TIFF support, use this:

    cd $MSBUILD
    curl -O -J -L ftp://ftp.remotesensing.org/libtiff/tiff-4.0.3.tar.gz
    tar xvfz tiff*tar.gz             # Unzip and untar what you downloaded
    cd tiff*[0-9]                    # Change directory to wherever it unpacked to
    ./configure --prefix="$MSSW"     # Configure with the necessary prefix
    make
    make install
    

    5.3 Feature = WEBP Support

    If you need WEBP support, use this:

    cd $MSBUILD
    curl -O -J -L http://downloads.webmproject.org/releases/webp/libwebp-0.4.3.tar.gz
    tar xvfz libwebp*tar.gz          # Unzip and untar what you downloaded
    cd libwebp*[0-9]                 # Change directory to wherever it unpacked to
    ./configure --prefix="$MSSW"     # Configure with the necessary prefix
    make
    make install
    

    5.4 Feature = JPEG Support

    If you need JPEG support, use this:

    cd $MSBUILD
    curl -O -J -L http://www.ijg.org/files/jpegsrc.v9a.tar.gz
    tar xvfz jpeg*tar.gz                 # Unzip and untar what you downloaded
    cd jpeg-9a                           # Change directory to wherever it unpacked to
    ./configure --prefix="$MSSW"         # Configure with the necessary prefix
    make
    make install
    

    5.5 Feature - X11 or X Windows

    As OSX no longer ships with an X11 server, you will need to install one yourself if you wish to use X11. Now, if you had taken my advice and used homebrew, you would be able to do:

    brew cask install xquartz
    

    and you would be finished. But you chose the Life of Agony ™ option, so you will have to figure out how to install XQuartz yourself.

    6. ImageMagick itself

    Once you have all the features you want installed, you can install ImageMagick. Get your copy here, then install like this:

    cd $MSBUILD
    gunzip ImageMagick.tar.gz
    tar -xvf ImageMagick.tar
    cd ImageMagick-6.9.1-2       # or wherever the tar-file extracted to
    

    Now choose your options. How do you know the options available? You run:

    ./configure --help
    

    and you will get a daunting array of options like this:

    `configure' configures ImageMagick 6.9.2-10 to adapt to many kinds of systems.
    
    Usage: ./configure [OPTION]... [VAR=VALUE]...
    
    To assign environment variables (e.g., CC, CFLAGS...), specify them as
    VAR=VALUE.  See below for descriptions of some of the useful variables.
    
    Defaults for the options are specified in brackets.
    
    Configuration:
      -h, --help              display this help and exit
          --help=short        display options specific to this package
          --help=recursive    display the short help of all the included packages
      -V, --version           display version information and exit
      -q, --quiet, --silent   do not print `checking ...' messages
          --cache-file=FILE   cache test results in FILE [disabled]
      -C, --config-cache      alias for `--cache-file=config.cache'
      -n, --no-create         do not create output files
          --srcdir=DIR        find the sources in DIR [configure dir or `..']
    
    Installation directories:
      --prefix=PREFIX         install architecture-independent files in PREFIX
                              [/usr/local]
      --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
                              [PREFIX]
    
    By default, `make install' will install all the files in
    `/usr/local/bin', `/usr/local/lib' etc.  You can specify
    an installation prefix other than `/usr/local' using `--prefix',
    for instance `--prefix=$HOME'.
    
    For better control, use the options below.
    
    Fine tuning of the installation directories:
      --bindir=DIR            user executables [EPREFIX/bin]
      --sbindir=DIR           system admin executables [EPREFIX/sbin]
      --libexecdir=DIR        program executables [EPREFIX/libexec]
      --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
      --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
      --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
      --libdir=DIR            object code libraries [EPREFIX/lib]
      --includedir=DIR        C header files [PREFIX/include]
      --oldincludedir=DIR     C header files for non-gcc [/usr/include]
      --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
      --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
      --infodir=DIR           info documentation [DATAROOTDIR/info]
      --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
      --mandir=DIR            man documentation [DATAROOTDIR/man]
      --docdir=DIR            documentation root [DATAROOTDIR/doc/ImageMagick]
      --htmldir=DIR           html documentation [DOCDIR]
      --dvidir=DIR            dvi documentation [DOCDIR]
      --pdfdir=DIR            pdf documentation [DOCDIR]
      --psdir=DIR             ps documentation [DOCDIR]
    
    Program names:
      --program-prefix=PREFIX            prepend PREFIX to installed program names
      --program-suffix=SUFFIX            append SUFFIX to installed program names
      --program-transform-name=PROGRAM   run sed PROGRAM on installed program names
    
    X features:
      --x-includes=DIR    X include files are in DIR
      --x-libraries=DIR   X library files are in DIR
    
    System types:
      --build=BUILD     configure for building on BUILD [guessed]
      --host=HOST       cross-compile to build programs to run on HOST [BUILD]
      --target=TARGET   configure for building compilers for TARGET [HOST]
    
    Optional Features:
      --disable-option-checking  ignore unrecognized --enable/--with options
      --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
      --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
      --enable-silent-rules   less verbose build output (undo: "make V=1")
      --disable-silent-rules  verbose build output (undo: "make V=0")
      --enable-reproducible-build
                              enable reproducible build
      --enable-dependency-tracking
                              do not reject slow dependency extractors
      --disable-dependency-tracking
                              speeds up one-time build
      --enable-ld-version-script
                              enable linker version script (default is enabled
                              when possible)
      --enable-bounds-checking
                              enable run-time bounds-checking
      --enable-osx-universal-binary
                              build universal binary on OS X [[default=no]]
      --disable-openmp        do not use OpenMP
      --enable-opencl         enable OpenCL support
      --disable-largefile     omit support for large files
      --enable-shared[=PKGS]  build shared libraries [default=yes]
      --enable-static[=PKGS]  build static libraries [default=yes]
      --enable-fast-install[=PKGS]
                              optimize for fast installation [default=yes]
      --disable-libtool-lock  avoid locking (might break parallel builds)
      --enable-delegate-build look for delegate libraries in build directory
      --disable-deprecated    exclude deprecated methods in MagickCore and
                              MagickWand APIs
      --disable-installed     Formally install ImageMagick under PREFIX
      --disable-cipher        disable enciphering and deciphering image pixels
      --enable-zero-configuration
                              enable self-contained, embeddable,
                              zero-configuration ImageMagick
      --enable-hdri           accurately represent the wide range of intensity
                              levels found in real scenes
      --disable-assert        disable assert() statements in build
      --enable-maintainer-mode
                              enable make rules and dependencies not useful (and
                              sometimes confusing) to the casual installer
      --enable-hugepages      enable 'huge pages' support
      --enable-ccmalloc       enable 'ccmalloc' memory debug support
      --enable-efence         enable 'efence' memory debug support
      --enable-prof           enable 'prof' profiling support
      --enable-gprof          enable 'gprof' profiling support
      --enable-gcov           enable 'gcov' profiling support
      --disable-assert        turn off assertions
      --disable-docs          disable building of documentation
    
    Optional Packages:
      --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
      --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
      --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
      --with-dmalloc          use dmalloc, as in http://www.dmalloc.com
      --with-gcc-arch=<arch>  use architecture <arch> for gcc -march/-mtune,
                              instead of guessing
      --includearch-dir=DIR   ARCH specific include directory
      --sharearch-dir=DIR     ARCH specific config directory
      --with-pkgconfigdir=DIR Path to the pkgconfig directory [LIBDIR/pkgconfig]
      --without-threads       disable threads support
      --with-pic[=PKGS]       try to use only PIC/non-PIC objects [default=use
                              both]
      --with-aix-soname=aix|svr4|both
                              shared library versioning (aka "SONAME") variant to
                              provide on AIX, [default=aix].
      --with-sysroot[=DIR]    Search for dependent libraries within DIR (or the
                              compiler's sysroot if not specified).
      --with-modules          enable building dynamically loadable modules
      --with-method-prefix=PREFIX
                              prefix MagickCore API methods
      --with-quantum-depth=DEPTH
                              number of bits in a pixel quantum (default 16)
      --with-cache=THRESHOLD  set pixel cache threshhold in MB (default available
                              memory)
      --with-frozenpaths      freeze delegate paths
      --without-magick-plus-plus
                              disable build/install of Magick++
      --with-package-release-name=NAME
                              encode this name into the shared library
      --with-perl             enable build/install of PerlMagick
      --with-perl-options=OPTIONS
                              options to pass on command-line when generating
                              PerlMagick build file
      --with-jemalloc         enable jemalloc memory allocation library support
      --with-umem             enable umem memory allocation library support
      --with-libstdc=DIR      use libstdc++ in DIR (for GNU C++)
      --without-bzlib         disable BZLIB support
      --with-x                use the X Window System
      --without-zlib          disable ZLIB support
      --with-apple-font-dir=DIR
                              Apple font directory
      --with-autotrace        enable autotrace support
      --without-dps           disable Display Postscript support
      --with-dejavu-font-dir=DIR
                              DejaVu font directory
      --without-fftw          disable FFTW support
      --without-fpx           disable FlashPIX support
      --without-djvu          disable DjVu support
      --without-fontconfig    disable fontconfig support
      --without-freetype      disable Freetype support
      --with-gslib            enable Ghostscript library support
      --with-fontpath=DIR     prepend to default font search path
      --with-gs-font-dir=DIR  Ghostscript font directory
      --with-gvc              enable GVC support
      --without-jbig          disable JBIG support
      --without-jpeg          disable JPEG support
      --without-lcms          disable lcms (v1.1X) support
      --without-openjp2       disable OpenJP2 support
      --without-lqr           disable Liquid Rescale support
      --without-lzma          disable LZMA support
      --without-openexr       disable OpenEXR support
      --without-pango         disable PANGO support
      --without-png           disable PNG support
      --with-rsvg             enable RSVG support
      --without-tiff          disable TIFF support
      --without-webp          disable WEBP support
      --with-windows-font-dir=DIR
                              Windows font directory
      --with-wmf              enable WMF support
      --without-xml           disable XML support
    
    Some influential environment variables:
      CC          C compiler command
      CFLAGS      C compiler flags
      LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
                  nonstandard directory <lib dir>
      LIBS        libraries to pass to the linker, e.g. -l<library>
      CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
                  you have headers in a nonstandard directory <include dir>
      CPP         C preprocessor
      CXX         C++ compiler command
      CXXFLAGS    C++ compiler flags
      PKG_CONFIG  path to pkg-config utility
      PKG_CONFIG_PATH
                  directories to add to pkg-config's search path
      PKG_CONFIG_LIBDIR
                  path overriding pkg-config's built-in search path
      LT_SYS_LIBRARY_PATH
                  User-defined run-time library search path.
      CXXCPP      C++ preprocessor
      XMKMF       Path to xmkmf, Makefile generator for X Window System
      ZLIB_CFLAGS C compiler flags for ZLIB, overriding pkg-config
      ZLIB_LIBS   linker flags for ZLIB, overriding pkg-config
      AUTOTRACE_CFLAGS
                  C compiler flags for AUTOTRACE, overriding pkg-config
      AUTOTRACE_LIBS
                  linker flags for AUTOTRACE, overriding pkg-config
      fftw3_CFLAGS
                  C compiler flags for fftw3, overriding pkg-config
      fftw3_LIBS  linker flags for fftw3, overriding pkg-config
      ddjvuapi_CFLAGS
                  C compiler flags for ddjvuapi, overriding pkg-config
      ddjvuapi_LIBS
                  linker flags for ddjvuapi, overriding pkg-config
      FONTCONFIG_CFLAGS
                  C compiler flags for FONTCONFIG, overriding pkg-config
      FONTCONFIG_LIBS
                  linker flags for FONTCONFIG, overriding pkg-config
      FREETYPE_CFLAGS
                  C compiler flags for FREETYPE, overriding pkg-config
      FREETYPE_LIBS
                  linker flags for FREETYPE, overriding pkg-config
      GVC_CFLAGS  C compiler flags for GVC, overriding pkg-config
      GVC_LIBS    linker flags for GVC, overriding pkg-config
      LCMS2_CFLAGS
                  C compiler flags for LCMS2, overriding pkg-config
      LCMS2_LIBS  linker flags for LCMS2, overriding pkg-config
      LIBOPENJP2_CFLAGS
                  C compiler flags for LIBOPENJP2, overriding pkg-config
      LIBOPENJP2_LIBS
                  linker flags for LIBOPENJP2, overriding pkg-config
      LQR_CFLAGS  C compiler flags for LQR, overriding pkg-config
      LQR_LIBS    linker flags for LQR, overriding pkg-config
      LZMA_CFLAGS C compiler flags for LZMA, overriding pkg-config
      LZMA_LIBS   linker flags for LZMA, overriding pkg-config
      OPENEXR_CFLAGS
                  C compiler flags for OPENEXR, overriding pkg-config
      OPENEXR_LIBS
                  linker flags for OPENEXR, overriding pkg-config
      PANGO_CFLAGS
                  C compiler flags for PANGO, overriding pkg-config
      PANGO_LIBS  linker flags for PANGO, overriding pkg-config
      PNG_CFLAGS  C compiler flags for PNG, overriding pkg-config
      PNG_LIBS    linker flags for PNG, overriding pkg-config
      RSVG_CFLAGS C compiler flags for RSVG, overriding pkg-config
      RSVG_LIBS   linker flags for RSVG, overriding pkg-config
      CAIRO_SVG_CFLAGS
                  C compiler flags for CAIRO_SVG, overriding pkg-config
      CAIRO_SVG_LIBS
                  linker flags for CAIRO_SVG, overriding pkg-config
      XML_CFLAGS  C compiler flags for XML, overriding pkg-config
      XML_LIBS    linker flags for XML, overriding pkg-config
    
    Use these variables to override the choices made by `configure' or to help
    it to find libraries and programs with nonstandard names/locations.
    
    Report bugs to <http://www.imagemagick.org>.
    

    Once you have chosen your options, install with a command that looks like this:

    ./configure --prefix="$MSSW" --with-modules --disable-docs --without-x --enable-hdri=yes --with-quantum-depth=16
    make
    make install
    

    Now add $MSSW/bin to your PATH in $HOME/.profile.

    export PATH=$HOME/sw/bin:${PATH}
    

    And log out and back in again to make the new PATH active (or dot in your profile, if you know what that means).

    7. Test the installation

    Now test it with:

    identify -version
    
    Version: ImageMagick 6.9.2-10 Q16 x86_64 2015-12-23 http://www.imagemagick.org
    Copyright: Copyright (C) 1999-2016 ImageMagick Studio LLC
    License: http://www.imagemagick.org/script/license.php
    Features: Cipher DPC Modules
    Delegates (built-in): bzlib cairo fontconfig freetype jng jp2 jpeg lcms ltdl lzma png rsvg tiff webp x xml zlib
    
    0 讨论(0)
提交回复
热议问题