在OSX上使用PNG支持从源代码编译ImageMagick

时间:2015-12-28 15:37:03

标签: macos imagemagick

我需要从源代码编译它。我一步一步地instruction使用jpeg和png支持构建它,但ImageMagick没有将PNG包含到委托列表中,但是jpeg已被包含在内。 PNG有什么问题?

Options used to compile and link:
PREFIX          = /opt/im
EXEC-PREFIX     = /opt/im
VERSION         = 6.9.2
CC              = gcc
CFLAGS          =   -g -O2 -Wall -mtune=haswell -fexceptions -D_FORTIFY_SOURCE=0 -D_THREAD_SAFE -pthread -DMAGICKCORE_HDRI_ENABLE=0 -DMAGICKCORE_QUANTUM_DEPTH=16
CPPFLAGS        =   -DMAGICKCORE_HDRI_ENABLE=0 -DMAGICKCORE_QUANTUM_DEPTH=16 -I/tmp/IM/ImageMagick-6.9.2-10/jpeg -I/tmp/IM/ImageMagick-6.9.2-10/magick -I/tmp/IM/ImageMagick-6.9.2-10/png -I/tmp/IM/ImageMagick-6.9.2-10/wand
PCFLAGS         = 
DEFS            = -DHAVE_CONFIG_H
LDFLAGS         =  -L/tmp/IM/ImageMagick-6.9.2-10/jpeg/.libs -L/tmp/IM/ImageMagick-6.9.2-10/jpeg -L/tmp/IM/ImageMagick-6.9.2-10/magick -L/tmp/IM/ImageMagick-6.9.2-10/png/.libs -L/tmp/IM/ImageMagick-6.9.2-10/png -L/tmp/IM/ImageMagick-6.9.2-10/wand
LIBS            = 
CXX             = g++
CXXFLAGS        = -g -O2 -D_THREAD_SAFE -pthread
FEATURES        = DPC Cipher
DELEGATES       = mpeg jpeg

1 个答案:

答案 0 :(得分:8)

以下是我在OSX上从源代码安装ImageMagick的方法。

<强> 1。安装Xcode

首先,无论您做什么,都需要Apple编译器和开发工具。所以,启动看起来像这样的AppStore

enter image description here

免费下载Xcode - 它看起来像这样:

enter image description here

<强> 2。安装命令行工具

安装Xcode后,需要安装命令行工具(即clang,clang ++,make),如下所示:

xcode-select --install

第3。选择您的方法 - homebrewLife of Agony

现在您需要选择继续操作的方式。最简单的选项,即英里和英里,英里,是使用homebrew。另一种方法是自我描述性的。

<强> 3A。自制方法

转到homebrew website并将其中的一行复制并粘贴到您的终端 - 我不会在这里显示它,因为它可能会改变,我希望您和未来的读者使用当前命令。安装homebrew后,您只需选择ImageMagick选项:

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

然后选择了您的选项,请使用

进行安装
brew install imagemagick --with-perl --with-librsvg

或任何你想要的。然后你就完成了,你不需要阅读下面的折磨!

稍后,升级很简单:

brew update && brew upgrade --all

解决问题很简单:

brew doctor

卸载很简单:

brew rm imagemagick

<强> 3B。 Agony™方法的生命

好的,我看到你遗憾地决定使用Life of Agony™,所以就这样吧。我希望您了解tarbash,环境变量,gzipmakecurl。现在是重新思考的好时机,毕竟使用homebrew ....

当然你想继续吗?好的,一般的想法是决定你需要什么功能,先安装功能,然后安装ImageMagick。

<强> 4。设置构建区域和环境

在$ HOME / .profile中设置两个目录和两个环境变量。这些将是您构建软件的build区域以及您将本地软件安装到的sw区域:

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

现在使用

将您的个人资料发送到当前会话中
. $HOME/.profile

或者只需注销并重新登录,以便上述变量生效。

接下来创建两个目录:

mkdir "$MSBUILD" "$MSSW"

<强> 5。考虑您需要的功能

现在考虑一下你需要什么功能:

5.1功能= PNG支持

如果您需要PNG支持,则首先需要zlib。在您的网络浏览器中,转到zlib website并找到最新版本的名称。然后在终端:

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

它可以为您提供zlib-1.2.8.tar.xz(或类似),您可以通过以下方式解压缩并安装:

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

现在您想要使用libpng

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

它可以让你(或类似):

libpng-1.6.17.tar.xz
使用此命令安装的

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功能= TIFF支持

如果您需要TIFF支持,请使用:

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功能= WEBP支持

如果您需要WEBP支持,请使用:

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功能= JPEG支持

如果您需要JPEG支持,请使用:

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功能 - X11或X Windows

由于OSX不再附带X11服务器,如果您想使用X11,则需要自己安装。现在,如果您接受了我的建议并使用了homebrew,那么您将能够:

brew cask install xquartz

你会完成的。但是您选择了Life of Agony™选项,因此您必须自己弄清楚如何安装XQuartz。

<强> 6。 ImageMagick本身

一旦拥有了所有要安装的功能,就可以安装ImageMagick。获取您的副本here,然后安装如下:

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

现在选择你的选择。您如何知道可用的选项?你跑:

./configure --help

你会得到一系列令人生畏的选项:

`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>.

选择了您的选项后,请使用如下命令安装:

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

现在将$ MSSW / bin添加到$ HOME / .profile中的PATH。

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

然后重新登录并重新登录以使新PATH处于活动状态(如果您知道这意味着什么,则在您的个人资料中加点。)

<强> 7。测试安装

现在用以下方法测试:

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