Compiling ImageMagick from a source supporting PNG in OSX

I need to compile it from sources. I followed the step-by-step instruction to create it with jpeg and png support, but ImageMagick did not include PNG in the delegate list, however jpeg was included. What is wrong with 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 
+5
source share
1 answer

This is how I can install ImageMagick from source on OSX.

1. Install Xcode

First, you'll need an Apple compiler and development tools, no matter what you do. So, launch the AppStore , which looks like this:

enter image description here

and download Xcode for free - it looks like this:

enter image description here

2. Installing command-line tools

After installing Xcode you need to install the command line tools (e.g. clang, clang ++, make) as follows:

 xcode-select --install 

3. Choose your method - homebrew or Life of Agony & trade;

Now you need to choose how you are going to move on. The easiest option β€” miles, miles, and miles β€” is to use homebrew . Another method is self-descriptive.

3a. homegrown method

Go to the homebrew website and copy and paste the single line liner into your terminal. I will not show it here because it can change, and I want you and future readers to use the current command. Once homebrew installed, you simply do this to select 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, set using

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

or whatever you want. Then you are done and you do not need to read the following torture!

Later, the updates are simple:

 brew update && brew upgrade --all 

The solution to the problems is simple:

 brew doctor 

Uninstalling is simple:

 brew rm imagemagick 

3b. A life of agony and commerce; Method

Well, I see that you, unfortunately, decided Life of Agony & trade ;, so be it. I hope you know tar , bash , environment variables, gzip , make , curl . Now is the time to think and use homebrew in the end ....

Do you want to continue? Well, the general idea is to decide which functions you need, first install the functions, and then install ImageMagick.

4. Set up the build area and environment

Set up two directories and two environments in your $ HOME / .profile file. This will be the build area where you create the software and the sw area where you install the local software:

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

Now submit your profile to the current session using

 . $HOME/.profile 

or just log out and log in for the above variables to take effect.

Then create two directories:

 mkdir "$MSBUILD" "$MSSW" 

5. Consider the features you need.

Now consider what features you need:

5.1 Function = PNG Support

If you need PNG support, you first need zlib . In your web browser, go to the zlib website and find the name of the latest version. Then in the 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 will give 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 the libpng that you are working with:

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

which will deliver this to you (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 Function = 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 Function = 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 Function = 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 Function - X11 or X Windows

Since OSX no longer comes with the X11 server, you will need to install it yourself if you want to use X11. Now, if you took my advice and used homebrew , you could do:

 brew cask install xquartz 

and you are done. But you chose Life of Agony & trade ;, so you will need to figure out how to install XQuartz yourself.

6. ImageMagick itself

After installing all the features you want to install, you can install ImageMagick. Get a 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 complex array of such parameters:

 `configure' configures ImageMagick 6.9.2-10 to adapt to many kinds of systems. Usage: ./configure [OPTION]... [VAR=VALUE]... To assign environment variables (eg, 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 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, eg -L<lib dir> if you have libraries in a nonstandard directory <lib dir> LIBS libraries to pass to the linker, eg -l<library> CPPFLAGS (Objective) C/C++ preprocessor flags, eg -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 search path PKG_CONFIG_LIBDIR path overriding pkg-config 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 selected your options, install using 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 log back in to make the new PATH active (or a point in your profile if you know what that means).

7. Check 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 
+8
source

Source: https://habr.com/ru/post/1239360/


All Articles