Skip to the content.

10. Graphics and Font Libraries


Depending on what your system will be used for, you may or may not require the graphics and font libraries. Most desktop machines will want them for use with graphical applications. Most servers on the other hand, will not require them.

10.1 AAlib-1.4rc5


Introduction to AAlib

AAlib is a library to render any graphic into ASCII Art.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

AAlib Dependencies

Optional

Xorg Libraries, Xorg Legacy Fonts (runtime), slang-2.3.3, and GPM-1.20.7

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/aalib

Installation of AAlib

Fix a minor problem with the included m4 file:

sed -i -e '/AM_PATH_AALIB,/s/AM_PATH_AALIB/[&]/' aalib.m4

Install AAlib by running the following commands:

./configure --prefix=/usr             \
            --infodir=/usr/share/info \
            --mandir=/usr/share/man   \
            --with-ncurses=/usr       \
            --disable-static          &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Contents

Installed Programs: aafire, aainfo, aalib-config, aasavefont, and aatest

Installed Library: libaa.so

Installed Directories: None

Short Descriptions

aafire is a demo of AAlib, rendering an animated fire in ASCII Art.

aainfo provides information for your current settings related to AAlib.

aalib-config provides configuration info for AAlib.

aasavefont saves a font to a file.

aatest shows the abilities of AAlib in a little test.

libaa.so is a collection of routines to render any graphical input in portable format to ASCII Art. It can be used through many programs and has a very well documented API, so you can easily put it into your own programs.

10.2 babl-0.1.98


Introduction to Babl

The Babl package is a dynamic, any to any, pixel format translation library.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

Babl Dependencies

gobject-introspection-1.74.0 and librsvg-2.54.5

Optional

Little CMS-2.14 and w3m

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/babl

Installation of Babl

Install Babl by running the following commands:

mkdir bld &&
cd    bld &&

meson --prefix=/usr --buildtype=release .. &&
ninja 

To test the results, issue: ninja test.

Now, as the root user:

ninja install &&

install -v -m755 -d                         /usr/share/gtk-doc/html/babl/graphics &&
install -v -m644 docs/*.{css,html}          /usr/share/gtk-doc/html/babl          &&
install -v -m644 docs/graphics/*.{html,svg} /usr/share/gtk-doc/html/babl/graphics

Command Explanations

install -v -m755 -d /usr/share/gtk-doc/html/babl/graphics: This and the subsequent commands install the library html documentation under /usr/share/gtk-doc/html where other gtk packages put the programmer-oriented documentation.

Contents

Installed Programs: None

Installed Libraries: libbabl-0.1.so and libraries in /usr/lib/babl-0.1

Installed Directories: /usr/{include,lib}/babl-0.1 and /usr/share/gtk-doc/html/babl

Short Descriptions

libbabl-0.1.so contains functions to access BablFishes to convert between formats.

10.3 Exiv2-0.27.6


Introduction to Exiv2

Exiv2 is a C++ library and a command line utility for managing image and video metadata.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

Exiv2 dependencies

Required

CMake-3.25.2

cURL-7.88.1

Optional

libssh

Optional for documentation

Doxygen-1.9.6, Graphviz-7.1.0, and libxslt-1.1.37

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/exiv2

Installation of Exiv2

Install Exiv2 by running the following commands:

mkdir build &&
cd    build &&

cmake -DCMAKE_INSTALL_PREFIX=/usr  \
      -DCMAKE_BUILD_TYPE=Release   \
      -DEXIV2_ENABLE_VIDEO=yes     \
      -DEXIV2_ENABLE_WEBREADY=yes  \
      -DEXIV2_ENABLE_CURL=yes      \
      -DEXIV2_BUILD_SAMPLES=no     \
      -G "Unix Makefiles" .. &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

-DEXIV2_ENABLE_VIDEO=yes: This switch enables managing video metadata.

-DEXIV2_ENABLE_WEBREADY=yes: This switch enables managing web image metadata.

-DEXIV2_BUILD_SAMPLES=no: This switch is necessary to suppress building and installing sample programs. If the sample programs are built, 34 additional programs are installed in /usr/bin.

-DEXIV2_ENABLE_CURL=yes: This switch is necessary to enable network/http capabilities.

Contents

Installed Program: exiv2

Installed Library: libexiv2.so and libexiv2-xmp.a

Installed Directories: /usr/include/exiv2

Short Descriptions

exiv2 is a utility used to dump Exif data.

10.4 FreeType-2.13.0


Introduction to FreeType2

The FreeType2 package contains a library which allows applications to properly render TrueType fonts.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

Additional Downloads

Additional Documentation

FreeType2 Dependencies

HarfBuzz-7.0.0 (first, install without it, after it is installed, reinstall FreeType-2.13.0), libpng-1.6.39, and Which-2.21

Optional

Brotli-1.0.9 and librsvg-2.54.5

Optional (for documentation)

docwriter

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/freetype2

Installation of FreeType2

If you downloaded the additional documentation, unpack it into the source tree using the following command:

tar -xf ../freetype-doc-2.13.0.tar.xz --strip-components=2 -C docs

Install FreeType2 by running the following commands:

sed -ri "s:.*(AUX_MODULES.*valid):\1:" modules.cfg &&

sed -r "s:.*(#.*SUBPIXEL_RENDERING) .*:\1:" \
    -i include/freetype/config/ftoption.h  &&

./configure --prefix=/usr --enable-freetype-config --disable-static &&
make

This package does not come with a test suite.

Now, as the root user:

make install

If you downloaded the optional documentation, install it as the root user:

install -v -m755 -d /usr/share/doc/freetype-2.13.0 &&
cp -v -R docs/*     /usr/share/doc/freetype-2.13.0 &&
rm -v /usr/share/doc/freetype-2.13.0/freetype-config.1

Command Explanations

sed -ri …: First command enables GX/AAT and OpenType table validation and second command enables Subpixel Rendering. Note that Subpixel Rendering may have patent issues. Be sure to read the 'Other patent issues' part of https://freetype.org/patents.html before enabling this option.

--enable-freetype-config: This switch ensure that the man page for freetype-config is installed.

--without-harfbuzz: If harfbuzz is installed prior to freetype without freetype support, use this switch to avoid a build failure.

--disable-static: This switch prevents installation of static versions of the libraries.

Contents

Installed Program: freetype-config

Installed Library: libfreetype.so

Installed Directories: /usr/include/freetype2 and /usr/share/doc/freetype-2.13.0

Short Descriptions

freetype-config is used to get FreeType compilation and linking information

libfreetype.so contains functions for rendering various font types, such as TrueType and Type1.

10.5 Fontconfig-2.14.2


Introduction to Fontconfig

The Fontconfig package contains a library and support programs used for configuring and customizing font access.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

Fontconfig Dependencies

Required

FreeType-2.13.0

Optional

cURL-7.88.1 and UnZip-6.0 (both used by some tests for downloading and extracting test files), JSON-C-0.16, DocBook-utils-0.6.14 and libxml2-2.10.3, texlive-20220321 (or install-tl-unx)

Note

If you have DocBook Utils installed and you remove the --disable-docs parameter from the configure command below, you must have SGMLSpm-1.1 and texlive-20220321 installed also, or the Fontconfig build will fail.

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/Fontconfig

Installation of Fontconfig

Install Fontconfig by running the following commands:

./configure --prefix=/usr        \
            --sysconfdir=/etc    \
            --localstatedir=/var \
            --disable-docs       \
            --docdir=/usr/share/doc/fontconfig-2.14.2 &&
make

To test the results, issue: make check. One test is known to fail if the kernel does not support user namespaces. Some tests will download some font files via Internet.

Now, as the root user:

make install

If you did not remove the --disable-docs parameter from the configure command, you can install the pre-generated documentation by using the following commands as the root user:

install -v -dm755 \
        /usr/share/{man/man{1,3,5},doc/fontconfig-2.14.2/fontconfig-devel} &&
install -v -m644 fc-*/*.1         /usr/share/man/man1 &&
install -v -m644 doc/*.3          /usr/share/man/man3 &&
install -v -m644 doc/fonts-conf.5 /usr/share/man/man5 &&
install -v -m644 doc/fontconfig-devel/* \
                                  /usr/share/doc/fontconfig-2.14.2/fontconfig-devel &&
install -v -m644 doc/*.{pdf,sgml,txt,html} \
                                  /usr/share/doc/fontconfig-2.14.2

Command Explanations

--disable-docs: This switch avoids building the documentation (the release tarball includes pre-generated documentation).

Configuring Fontconfig

Config Files

/etc/fonts/*, /etc/fonts/conf.d/* and /usr/share/fontconfig/conf.avail/*

Configuration Information

The main configuration file for Fontconfig is /etc/fonts/fonts.conf. Generally you do not want to edit this file. It will also read /etc/fonts/local.conf and any files in /etc/fonts/conf.d. To put a new font directory in the configuration, create (or update) the /etc/fonts/local.conf file with your local information or add a new file in /etc/fonts/conf.d. The default location of fonts in Fontconfig is:

Fontconfig also ships many example configuration files in the /usr/share/fontconfig/conf.avail directory. Symlinking specific files to /etc/fonts/conf.d will enable them. The default setup is generally good enough for most users. See /etc/fonts/conf.d/README for a description of the configuration files.

More information about configuring Fontconfig can be found in the user’s manual in file:///usr/share/doc/fontconfig-2.14.2/fontconfig-user.html.

Contents

Installed Programs: fc-cache, fc-cat, fc-conflist, fc-list, fc-match, fc-pattern, fc-query, fc-scan, and fc-validate

Installed Library: libfontconfig.so

Installed Directories: /etc/fonts, /usr/include/fontconfig, /usr/share/doc/fontconfig-2.14.2, /usr/share/fontconfig, /usr/share/xml/fontconfig, and /var/cache/fontconfig

Short Descriptions

fc-cache is used to create font information caches

fc-cat is used to read font information caches

fc-conflist shows the ruleset files’ information on the system

fc-list is used to create font lists

fc-match is used to match available fonts, or find fonts that match a given pattern

fc-pattern is used to parse pattern (empty pattern by default) and show the parsed result

fc-query is used to query fonts files and print resulting patterns

fc-scan is used to scan font files and directories, and print resulting patterns

fc-validate is used to validate font files

libfontconfig.so contains functions used by the Fontconfig programs and also by other programs to configure or customize font access.

10.6 FriBidi-1.0.12


Introduction to FriBidi

The FriBidi package is an implementation of the Unicode Bidirectional Algorithm (BIDI). This is useful for supporting Arabic and Hebrew alphabets in other packages.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

FriBidi Dependencies

Optional

c2man (to build man pages)

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/fribidi

Installation of FriBidi

Install FriBidi by running the following commands:

mkdir build &&
cd    build &&

meson --prefix=/usr --buildtype=release .. &&
ninja

To test the results, issue: ninja test.

Now, as the root user:

ninja install

Command Explanations

--buildtype=release: Specify a buildtype suitable for stable releases of the package, as the default may produce unoptimized binaries.

Contents

Installed Program: fribidi

Installed Library: libfribidi.so

Installed Directory: /usr/include/fribidi

Short Descriptions

fribidi is a command-line interface to the libfribidi library and can be used to convert a logical string to visual output

libfribidi.so contains functions used to implement the Unicode Bidirectional Algorithm.

10.7 gegl-0.4.40


Introduction to gegl

This package provides the GEneric Graphics Library, which is a graph based image processing format.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

gegl Dependencies

Required

babl-0.1.98, JSON-GLib-1.6.6, libjpeg-turbo-2.1.5.1, and libpng-1.6.39

gobject-introspection-1.74.0, Graphviz-7.1.0, Pygments-2.14.0, and PyGObject-3.42.2

Optional

asciidoc-10.2.0, Cairo-1.17.6, Exiv2-0.27.6, FFmpeg-5.1.2, gdk-pixbuf-2.42.10, gexiv2-0.14.0, GTK-Doc-1.33.2, JasPer-4.0.0, Little CMS-2.14, libraw-0.21.1, librsvg-2.54.5, libtiff-4.5.0, libwebp-1.3.0, Pango-1.50.12, Poppler-23.02.0, Ruby-3.2.1, SDL2-2.26.3, v4l-utils-1.22.1, Vala-0.56.4, libspiro-20220722, lensfun, libumfpack, LuaJIT, OpenCL (for tests), MRG, and OpenEXR

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/gegl

Installation of gegl

If installing over a previous version of gegl, one module needs to be removed. As the root user, run:

rm -f /usr/lib/gegl-0.4/vector-fill.so

If LibRaw-0.21.0 or above is installed, the build fails due to a change in the ABI. Fix the issue by issuing:

sed -e '/shot_select/s/params/raw&/' \
    -i operations/external/raw-load.c

Install gegl by running the following commands:

mkdir build &&
cd    build &&

meson --prefix=/usr --buildtype=release .. &&
ninja

To run the tests, issue: ninja test. This should indicate no failures, but will skip many tests depending on optional dependencies installed on the system.

Now, as the root user:

ninja install

Command Explanations

-Ddocs=true: Build and install documentation (requires GTK-Doc-1.33.2,).

Contents

Installed Programs: gegl and gegl-imgcmp

Installed Libraries: libgegl-0.4.so, libgegl-npd-0.4.so, libgegl-sc-0.4.so, and modules in /usr/lib/gegl-0.4

Installed Directories: /usr/lib/gegl-0.4 and /usr/include/gegl-0.4

Short Descriptions

gegl is a commandline tool for working with the XML data model

gegl-imgcmp is a simple image difference detection tool for use in regression testing

libgegl-0.4.so provides infrastructure to do demand based cached non destructive image editing on larger than RAM buffers

libgegl-npd-0.4.so is the GEGL N-point image deformation library

libgegl-sc-0.4.so is the GEGL Seamless Cloning library.

10.8 giflib-5.2.1


Introduction to giflib

The giflib package contains libraries for reading and writing GIFs as well as programs for converting and working with GIF files.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

giflib Dependencies

Required

xmlto-0.0.28

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/giflib

Installation of giflib

Install giflib by running the following commands:

make

This package does not come with a test suite.

Now, as the root user:

make PREFIX=/usr install &&

rm -fv /usr/lib/libgif.a &&

find doc \( -name Makefile\* -o -name \*.1 \
         -o -name \*.xml \) -exec rm -v {} \; &&

install -v -dm755 /usr/share/doc/giflib-5.2.1 &&
cp -v -R doc/* /usr/share/doc/giflib-5.2.1

Command Explanations

rm -fv /usr/lib/libgif.a: This command removes a static library which is not used by any BLFS package.

find doc … -exec rm -v {} \;: This command removes Makefiles, man and xml files from the documentation directory that would otherwise be installed by the commands that follow.

Contents

Installed Programs: gif2rgb, gifbuild, gifclrmp, giffix, giftext, and giftool

Installed Library: libgif.so

Installed Directory: /usr/share/doc/giflib-5.2.1

Short Descriptions

gif2rgb converts images saved as GIF to 24-bit RGB images

gifbuild dumps GIF data in a textual format, or undumps it to a GIF

gifclrmp modifies GIF image colormaps

giffix clumsily attempts to fix truncated GIF images

giftext prints (text only) general information about a GIF file

giftool is a GIF transformation tool

libgif.so contains API functions required by the giflib programs and any other programs needing library functionality to read, write and manipulate GIF images.

10.9 GLM-0.9.9.8


Introduction to GLM

OpenGL Mathematics (GLM) is a header-only C++ mathematics library for graphics software based on the OpenGL Shading Language (GLSL) specifications. An extension system provides extended capabilities such as matrix transformations and quaternions.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/GLM

Installation of GLM

Note

This package is unusual as it includes its functionality in header files. We just copy them into position.

As the root user:

cp -r glm /usr/include/ &&
cp -r doc /usr/share/doc/glm-0.9.9.8

Contents

Installed Program: None

Installed Library: None

Installed Directory: /usr/include/glm

10.10 Graphite2-1.3.14


Introduction to Graphite2

Graphite2 is a rendering engine for graphite fonts. These are TrueType fonts with additional tables containing smart rendering information and were originally developed to support complex non-Roman writing systems. They may contain rules for e.g. ligatures, glyph substitution, kerning, justification - this can make them useful even on text written in Roman writing systems such as English. Note that firefox by default provides an internal copy of the graphite engine and cannot use a system version (although it can now be patched to use it), but it too should benefit from the availability of graphite fonts.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

Graphite2 Dependencies

Required

CMake-3.25.2

Optional

FreeType-2.13.0, silgraphite to build the comparerender test and benchmarking tool, and if that is present, and HarfBuzz-7.0.0 to add more functionality to it (this is a circular dependency, you would need to first build graphite2 without harfbuzz).

To build the documentation: asciidoc-10.2.0, Doxygen-1.9.6, texlive-20220321 (or install-tl-unx), and dblatex (for PDF docs)

To execute the test suite you will need FontTools (Python 3 module), otherwise, the “cmp” tests fail.

Optional (at runtime)

You will need at least one suitable graphite font for the package to be useful.

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/graphite2

Installation of Graphite2

Some tests fail if FontTools (Python 3 module) is not installed. These tests can be removed with:

sed -i '/cmptest/d' tests/CMakeLists.txt

Install Graphite2 by running the following commands:

mkdir build &&
cd    build &&

cmake -DCMAKE_INSTALL_PREFIX=/usr .. &&
make

If you wish to build the documentation, issue:

make docs

To test the results, issue: make test.

Now, as the root user:

make install

If you built the documentation, install, as the root user:

install -v -d -m755 /usr/share/doc/graphite2-1.3.14 &&

cp      -v -f    doc/{GTF,manual}.html \
                    /usr/share/doc/graphite2-1.3.14 &&
cp      -v -f    doc/{GTF,manual}.pdf \
                    /usr/share/doc/graphite2-1.3.14

Command Explanations

-DCMAKE_VERBOSE_MAKEFILE=ON: This switch turns on build verbose mode.

Contents

Installed Programs: gr2fonttest, and optionally comparerender

Installed Libraries: libgraphite2.so

Installed Directories: /usr/{include,share}/graphite2 and optionally /usr/share/doc/graphite2-1.3.14

Short Descriptions

comparerender is a test and benchmarking tool

gr2fonttest is a diagnostic console tool for graphite fonts

libgraphite2.so is a rendering engine for graphite fonts.

10.11 HarfBuzz-7.0.0


Introduction to Harfbuzz

The HarfBuzz package contains an OpenType text shaping engine.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

HarfBuzz Dependencies

gobject-introspection-1.74.0 (required if building GNOME), GLib-2.74.5 (required for Pango), Graphite2-1.3.14 (required for building texlive-20220321 or LibreOffice-7.5.0.3 with system harfbuzz), ICU-72.1, and FreeType-2.13.0 (after HarfBuzz-7.0.0 is installed, reinstall FreeType-2.13.0)

Optional

Cairo-1.17.6 (circular: build cairo and all its recommended dependencies, including harfbuzz, first, then rebuild harfbuzz if the cairo backend is needed), git-2.39.2, GTK-Doc-1.33.2, FontTools (Python 3 module, for the test suite), and ragel

Warning

Recommended dependencies are not strictly required to build the package. However, you might not get expected results at runtime if you don’t install them. Please do not report bugs with this package if you have not installed the recommended dependencies.

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/harfbuzz

Installation of HarfBuzz

Install HarfBuzz by running the following commands:

mkdir build &&
cd    build &&

meson --prefix=/usr        \
      --buildtype=release  \
      -Dgraphite2=enabled  &&
ninja

To test the results, issue: ninja test.

Now, as the root user:

ninja install

Command Explanations

--buildtype=release: Specify a buildtype suitable for stable releases of the package, as the default may produce unoptimized binaries.

-Dgraphite2=enabled: This switch enables Graphite2 support, which is required for building texlive-20220321 or LibreOffice-7.5.0.3 with system harfbuzz.

-Ddocs=disabled: If GTK-Doc-1.33.2 is installed, the documentation is built and installed. This switch prevents that.

Contents

Installed Programs: hb-info, hb-ot-shape-closure, hb-shape, hb-subset, and hb-view (only if Cairo is installed)

Installed Libraries: libharfbuzz.so, libharfbuzz-cairo.so (only if Cairo is installed), libharfbuzz-gobject.so, libharfbuzz-icu.so, and libharfbuzz-subset.so

Installed Directories: /usr/include/harbuzz, /usr/lib/cmake/harfbuzz, and /usr/share/gtk-doc/html/harfbuzz (optional)

Short Descriptions

hb-info is used for gathering information about fonts installed on the system.

hb-ot-shape-closure gives the set of characters contained in a string, represented as single characters and/or single character names. Example: hb-ot-shape-closure /usr/share/fonts/dejavu/DejaVuSans.ttf “Hello World.”.

hb-shape is used for the conversion of text strings into positioned glyphs.

hb-subset is used to create subsets of fonts, and display text using them.

hb-view displays a graphical view of a string shape using a particular font as a set of glyphs. The output format is automatically defined by the file extension, the supported ones being ansi/png/svg/pdf/ps/eps. For example: hb-view –output-file=hello.png /usr/share/fonts/dejavu/DejaVuSans.ttf “Hello World.”.

libharfbuzz.so is the HarfBuzz text shaping library.

libharfbuzz-cairo.so provides Cairo integration for the Harfbuzz text shaping library.

libharfbuzz-gobject.soprovides GObject integration for the HarfBuzz text shaping library.

libharfbuzz-icu.so provides ICU integration for the HarfBuzz text shaping library.

libharfbuzz-subset.so provides API functions for performing subsetting operations on font files.

10.12 JasPer-4.0.0


Introduction to JasPer

The JasPer Project is an open-source initiative to provide a free software-based reference implementation of the JPEG-2000 codec.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

JasPer Dependencies

Required

CMake-3.25.2

libjpeg-turbo-2.1.5.1

Optional

Freeglut-3.4.0 (required for jiv), Doxygen-1.9.6 (needed for generating html documentation), and texlive-20220321 (needed to regenerate the pdf documentation)

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/jasper

Installation of JasPer

Note

The tarball jasper-4.0.0.tar.gz will extract to jasper-version-4.0.0.

Install JasPer by running the following commands:

mkdir BUILD &&
cd    BUILD &&

cmake -DCMAKE_INSTALL_PREFIX=/usr    \
      -DCMAKE_BUILD_TYPE=Release     \
      -DCMAKE_SKIP_INSTALL_RPATH=YES \
      -DJAS_ENABLE_DOC=NO            \
      -DCMAKE_INSTALL_DOCDIR=/usr/share/doc/jasper-4.0.0 \
      ..  &&
make

To test the results, issue: make test.

Now, as the root user:

make install

Command Explanations

-DCMAKE_SKIP_INSTALL_RPATH=YES: This option removes embedded library search paths.

-DJAS_ENABLE_DOC=NO: This option disables rebuilding the pdf documentation if texlive-20220321 is installed.

Contents

Installed Programs: imgcmp, imginfo, jasper, and jiv

Installed Library: libjasper.so

Installed Directories: /usr/include/jasper and /usr/share/doc/jasper-4.0.0

Short Descriptions

imgcmp compares two images of the same geometry

imginfo displays information about an image

jasper converts images between formats (BMP, JPS, JPC, JPG, PGX, PNM, MIF, and RAS)

jiv displays images

libjasper.so is a library used by programs for reading and writing JPEG2000 format files.

10.13 Little CMS-1.19


Introduction to Little CMS

The Little CMS library is used by other programs to provide color management facilities.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

Additional Downloads

Little CMS Dependencies

Optional

libtiff-4.5.0, libjpeg-turbo-2.1.5.1, and Python-2.7.18 (with SWIG-4.1.1 also)

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/lcms

Installation of Little CMS

Install Little CMS by running the following commands:

patch -Np1 -i ../lcms-1.19-cve_2013_4276-1.patch &&

./configure --prefix=/usr --disable-static       &&
make

To test the results, issue: make check.

Now, as the root user:

make install &&
install -v -m755 -d /usr/share/doc/lcms-1.19 &&
install -v -m644    README.1ST doc/* \
                    /usr/share/doc/lcms-1.19

Command Explanations

--disable-static: This switch prevents installation of static versions of the libraries.

--with-python: Use this parameter if Python and SWIG are installed.

Contents

Installed Programs: icc2ps, icclink, icctrans, wtpt and optionally, jpegicc, tiffdiff and tifficc

Installed Libraries: liblcms.so and the optional _lcms.so Python module

Installed Directory: /usr/share/doc/lcms-1.19

Short Descriptions

icc2ps generates PostScript CRD or CSA from ICC profiles.

icclink links two or more profiles into a single device link profile.

icctrans is a color space conversion calculator.

jpegicc is an ICC profile applier for JPEG files.

tifficc is an ICC profile applier for TIFF files.

tiffdiff is a TIFF compare utility.

wtpt shows media white of profiles, identifying black body locus.

liblcms.so is used by the lcms programs as well as other programs to provide color management facilities.

10.14 Little CMS-2.14


Introduction to Little CMS2

The Little Color Management System is a small-footprint color management engine, with special focus on accuracy and performance. It uses the International Color Consortium standard (ICC), which is the modern standard for color management.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

Little CMS2 Dependencies

Optional

libjpeg-turbo-2.1.5.1 and libtiff-4.5.0

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/lcms2

Installation of Little CMS2

Apply the upstream fix for an issue breaking colord:

sed '/BufferSize < TagSize/,+1 s/goto Error/TagSize = BufferSize/' \
    -i src/cmsio0.c

Install Little CMS2 by running the following commands:

./configure --prefix=/usr --disable-static &&
make

To test the results, issue: make check.

Now, as the root user:

make install

Command Explanations

--disable-static: This switch prevents installation of static versions of the libraries.

Contents

Installed Programs: jpgicc, linkicc, psicc, tificc, and transicc

Installed Library: liblcms2.so

Installed Directories: None

Short Descriptions

jpgicc is the Little CMS ICC profile applier for JPEG

linkicc is the Little CMS ICC device link generator

psicc is the Little CMS ICC PostScript generator

tificc is the Little CMS ICC tiff generator

transicc is the Little CMS ColorSpace conversion calculator

liblcms2.so contains functions that implement the lcms2 API.

10.15 libexif-0.6.24


Introduction to libexif

The libexif package contains a library for parsing, editing, and saving EXIF data. Most digital cameras produce EXIF files, which are JPEG files with extra tags that contain information about the image. All EXIF tags described in EXIF standard 2.1 are supported.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

libexif Dependencies

Optional (to Build Documentation)

Doxygen-1.9.6 and Graphviz-7.1.0

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/libexif

Installation of libexif

Install libexif by running the following commands:

./configure --prefix=/usr    \
            --disable-static \
            --with-doc-dir=/usr/share/doc/libexif-0.6.24 &&
make

To test the results, issue: make check.

Now, as the root user:

make install

Documentation was built and installed if you have the dependencies shown above installed. If you don’t have the dependencies installed, there is a compressed tarball in the source tree doc directory that can be unpacked into /usr/share/doc/libexif-0.6.24.

Command Explanations

--disable-static: This switch prevents installation of static versions of the libraries.

Contents

Installed Programs: None

Installed Library: libexif.so

Installed Directories: /usr/include/libexif and /usr/share/doc/libexif-0.6.24

Short Descriptions

libexif.so contains functions used for parsing, editing, and saving EXIF data.

10.16 Libgxps-0.3.2


Introduction to libgxps

The libgxps package provides an interface to manipulate XPS documents.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

Libgxps Dependencies

Required

GTK+-3.24.36, Little CMS-2.14, libarchive-3.6.2, libjpeg-turbo-2.1.5.1, libtiff-4.5.0, and libxslt-1.1.37

Optional

git-2.39.2 and GTK-Doc-1.33.2

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/libgxps

Installation of Libgxps

Install Libgxps by running the following commands:

mkdir build &&
cd    build &&

meson --prefix=/usr --buildtype=release .. &&
ninja

This package does not come with a test suite.

Now, as the root user:

ninja install

Command Explanations

--buildtype=release: Specify a buildtype suitable for stable releases of the package, as the default may produce unoptimized binaries.

Contents

Installed Programs: xpstojpeg, xpstopdf, xpstopng, xpstops, and xpstosvg

Installed Library: libgxps.so

Installed Directories: /usr/include/libgxps

Short Descriptions

xpstojpeg converts XPS documents to a JPEG image

xpstopdf converts XPS documents to PDF format

xpstopng converts XPS documents to a PNG image

xpstops converts XPS documents to PostScript

xpstosvg converts XPS documents to SVG images

libgxps.so contains API functions for manipulating XPS documents.

10.17 libjpeg-turbo-2.1.5.1


Introduction to libjpeg-turbo

libjpeg-turbo is a fork of the original IJG libjpeg which uses SIMD to accelerate baseline JPEG compression and decompression. libjpeg is a library that implements JPEG image encoding, decoding and transcoding.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

libjpeg-turbo Dependencies

Required

CMake-3.25.2

NASM-2.16.01 or yasm-1.3.0 (for building the package with optimized assembly routine)

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/libjpeg-turbo

Installation of libjpeg-turbo

Install libjpeg-turbo by running the following commands:

mkdir build &&
cd    build &&

cmake -DCMAKE_INSTALL_PREFIX=/usr \
      -DCMAKE_BUILD_TYPE=RELEASE  \
      -DENABLE_STATIC=FALSE       \
      -DCMAKE_INSTALL_DOCDIR=/usr/share/doc/libjpeg-turbo-2.1.5.1 \
      -DCMAKE_INSTALL_DEFAULT_LIBDIR=lib  \
      .. &&
make

To test the results, issue: make test.

Now, as the root user:

make install

Command Explanations

-DWITH_JPEG8=ON: This switch enables compatibility with libjpeg version 8.

Contents

Installed Programs: cjpeg, djpeg, jpegtran, rdjpgcom, tjbench, and wrjpgcom

Installed Libraries: libjpeg.so and libturbojpeg.so

Installed Directories: /usr/share/doc/libjpeg-turbo-2.1.5.1

Short Descriptions

cjpeg compresses image files to produce a JPEG/JFIF file on the standard output. Currently supported input file formats are: PPM (PBMPLUS color format), PGM (PBMPLUS gray-scale format), BMP, and Targa

djpeg decompresses image files from JPEG/JFIF format to either PPM (PBMPLUS color format), PGM (PBMPLUS gray-scale format), BMP, or Targa format

jpegtran is used for lossless transformation of JPEG files

rdjpgcom displays text comments from within a JPEG file

tjbench is used to benchmark the performance of libjpeg-turbo

wrjpgcom inserts text comments into a JPEG file

libjpeg.so contains functions used for reading and writing JPEG images.

10.18 libmng-2.0.3


Introduction to libmng

The libmng libraries are used by programs wanting to read and write Multiple-image Network Graphics (MNG) files which are the animation equivalents to PNG files.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

libmng Dependencies

Required

libjpeg-turbo-2.1.5.1 and Little CMS-2.14

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/libmng

Installation of libmng

Install libmng by running the following commands:

./configure --prefix=/usr --disable-static &&
make

This package does not come with a test suite.

Now, as the root user:

make install &&

install -v -m755 -d        /usr/share/doc/libmng-2.0.3 &&
install -v -m644 doc/*.txt /usr/share/doc/libmng-2.0.3

Command Explanations

--disable-static: This switch prevents installation of static versions of the libraries.

Contents

Installed Programs: None

Installed Library: libmng.so

Installed Directory: /usr/share/doc/libmng-2.0.3

Short Descriptions

libmng.so provides functions for programs wishing to read and write MNG files which are animation files without the patent problems associated with certain other formats.

10.19 libmypaint-1.6.1


Introduction to libmypaint

The libmypaint package, a.k.a. “brushlib”, is a library for making brushstrokes which is used by MyPaint and other projects.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

libmypaint Dependencies

Required

JSON-C-0.16

GLib-2.74.5 and gobject-introspection-1.74.0

Optional

Doxygen-1.9.6 (to create XML docs), gegl (0.3 versions only) and gperftools

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/libmypaint

Installation of libmypaint

Install libmypaint by running the following commands:

./configure --prefix=/usr &&
make

To test the results, issue: make check.

Now, as the root user:

make install

Contents

Installed Programs: None.

Installed Libraries: libmypaint.so (and optionally libmypaint-gegl.so which is not used by any packages in this book).

Installed Directory: /usr/include/libmypaint

Short Descriptions

libmypaint.so contains functions for making brushstrokes.

10.20 libpng-1.6.39


Introduction to libpng

The libpng package contains libraries used by other programs for reading and writing PNG files. The PNG format was designed as a replacement for GIF and, to a lesser extent, TIFF, with many improvements and extensions and lack of patent problems.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

Additional Downloads

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/libpng

Installation of libpng

If you want to patch libpng to support apng files, apply it here:

gzip -cd ../libpng-1.6.39-apng.patch.gz | patch -p1

Install libpng by running the following commands:

./configure --prefix=/usr --disable-static &&
make

To test the results, issue: make check.

Now, as the root user:

make install &&
mkdir -v /usr/share/doc/libpng-1.6.39 &&
cp -v README libpng-manual.txt /usr/share/doc/libpng-1.6.39

Command Explanations

--disable-static: This switch prevents installation of static versions of the libraries.

Contents

Installed Programs: libpng-config (symlink), libpng16-config, pngfix and png-fix-itxt

Installed Libraries: libpng.so

Installed Directories: /usr/include/libpng16 and /usr/share/doc/libpng-1.6.39

Short Descriptions

pngfix tests, optimizes and optionally fixes the zlib header in PNG files. Optionally, when fixing, strips ancillary chunks from the file

png-fix-itxt fixes PNG files that have an incorrect length field in the iTXt chunks

libpng-config is a shell script that provides configuration information for applications wanting to use libpng

libpng.so contain routines used to create and manipulate PNG format graphics files.

10.21 libraw-0.21.1


Introduction to libraw

Libraw is a library for reading RAW files obtained from digital photo cameras (CRW/CR2, NEF, RAF, DNG, and others).

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

libraw Dependencies

libjpeg-turbo-2.1.5.1, JasPer-4.0.0, and Little CMS-2.14

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/libraw

Installation of libraw

Install libraw by running the following commands:

autoreconf -fiv              &&
./configure --prefix=/usr    \
            --enable-jpeg    \
            --enable-jasper  \
            --enable-lcms    \
            --disable-static \
            --docdir=/usr/share/doc/libraw-0.21.1 &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--enable-jpeg: This switch enables support for jpeg. Remove if you don’t have libjpeg-turbo-2.1.5.1 installed.

--enable-jasper: This switch enables support for jasper. Remove if you don’t have JasPer-4.0.0 installed.

--enable-lcms: This switch enables support for Little CMS2. Remove if you don’t have Little CMS-2.14 installed.

--disable-static: This switch prevents installation of static versions of the libraries.

Contents

Note

All the installed programs are examples of using libraw.

Installed Programs: 4channels, dcraw_emu, dcraw_half, half_mt, mem_image, multirender_test, postprocessing_benchmark, raw-identify, simple_dcraw, and unprocessed_raw

Installed Library: libraw.so and libraw_r.so

Installed Directories: /usr/include/libraw and /usr/share/doc/libraw-0.21.1

Short Descriptions

4channels generates four TIFF files from RAW data, one file per channel

dcraw_half emulates “dcraw -h” (see DCRAW manpage)

mem_image emulates “dcraw [-4] [-6] [-e]” (see DCRAW manpage)

postprocessing_benchmark creates eight different renderings from one source file. The first and fourth one should be identical

simple_dcraw emulates call to “dcraw [-D] [-T] [-v] [-e] [-4]” (see DCRAW manpage)

dcraw_emu is an almost complete dcraw emulator (see DCRAW manpage)

half_mt emulates call to “dcraw -h [-w] [-a] [-v]” (see DCRAW manpage)

multirender_test creates eight different renderings from one source file. The first and fourth one should be identical

raw-identify emulates call to “dcraw -i [-v]” (see DCRAW manpage)

unprocessed_raw generates unprocessed raw image: with masked pixels and without black subtraction.

10.22 librsvg-2.54.5


Introduction to librsvg

The librsvg package contains a library and tools used to manipulate, convert and view Scalable Vector Graphic (SVG) images.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

librsvg Dependencies

Required

Cairo-1.17.6, gdk-pixbuf-2.42.10, Pango-1.50.12, and rustc-1.67.1

gobject-introspection-1.74.0 and Vala-0.56.4

Optional

docutils-0.19 (for man pages), Gi-DocGen-2023.1 (for documentation), and Xorg Fonts (for tests)

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/librsvg

Installation of librsvg

Install librsvg by running the following commands:

./configure --prefix=/usr    \
            --enable-vala    \
            --disable-static \
            --docdir=/usr/share/doc/librsvg-2.54.5 &&
make

To test the results, issue: make -k check. During testing some binaries are rebuilt with a different debug level, so you should run make again after the tests are complete to ensure everything is ready to be installed.

Now, as the root user:

make install

Note

If you installed the package on to your system using a “DESTDIR” method, an important file was not installed and should be copied and/or generated. Generate it using the following command as the root user:

gdk-pixbuf-query-loaders --update-cache

Command Explanations

--enable-vala: This switch enables building of the Vala bindings. Remove this switch if you don’t have Vala-0.56.4 installed.

--disable-static: This switch prevents installation of static versions of the libraries.

--disable-introspection: Use this switch if you have not installed Gobject Introspection.

--disable-gtk-doc: This switch prevents building the API documentation, even if Gi-DocGen-2023.1 (despite the name of the option) is available.

Contents

Installed Programs: rsvg-convert

Installed Library: librsvg-2.so

Installed Directories: /usr/include/librsvg-2.0 and /usr/share/doc/librsvg-2.54.5

Short Descriptions

rsvg-convert is used to convert images into PNG, PDF, PS, SVG and other formats.

librsvg-2.so provides the functions to render Scalable Vector Graphics.

libpixbufloader-svg.sois the Gdk Pixbuf plugin that allows GTK+ applications to render Scalable Vector Graphics images.

10.23 Libspiro-20220722


Introduction to libspiro

Libspiro will take an array of spiro control points and convert them into a series of bezier splines which can then be used in the myriad of ways the world has come to use beziers.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/libspiro

Installation of libspiro

Install libspiro by running the following commands:

./configure --prefix=/usr --disable-static &&
make

To test the results, issue: make check.

Now, as the root user:

make install

Command Explanations

--disable-static: This switch prevents installation of static versions of the libraries.

Contents

Installed Programs: None

Installed Library: libspiro.so

Installed Directories: None

Short Descriptions

libspiro.so is a shareable library that can be used by programs to do the Spiro computations for you.

10.24 libtiff-4.5.0


Introduction to libtiff

The libtiff package contains the TIFF libraries and associated utilities. The libraries are used by many programs for reading and writing TIFF files and the utilities are used for general work with TIFF files.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

libtiff Dependencies

CMake-3.25.2

Optional

Freeglut-3.4.0 (required for tiffgt), libjpeg-turbo-2.1.5.1, sphinx-6.1.3, libwebp-1.3.0, JBIG-KIT, and LERC

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/libtiff

Installation of libtiff

Install libtiff by running the following commands:

mkdir -p libtiff-build &&
cd       libtiff-build &&

cmake -DCMAKE_INSTALL_DOCDIR=/usr/share/doc/libtiff-4.5.0 \
      -DCMAKE_INSTALL_PREFIX=/usr -G Ninja .. &&
ninja

To test the results, issue: ninja test.

Now, as the root user:

ninja install

Contents

Installed Programs: fax2ps, fax2tiff, pal2rgb, ppm2tiff, raw2tiff, tiff2bw, tiff2pdf, tiff2ps, tiff2rgba, tiffcmp, tiffcp, tiffcrop, tiffdither, tiffdump, tiffgt, tiffinfo, tiffmedian, tiffset and tiffsplit

Installed Libraries: libtiff.so and libtiffxx.so

Installed Directory: /usr/share/doc/tiff-4.5.0

Short Descriptions

fax2ps converts a TIFF facsimile to compressed PostScript file.

fax2tiff creates a TIFF Class F fax file from raw fax data.

pal2rgb converts a palette color TIFF image to a full color image.

ppm2tiff creates a TIFF file from a PPM image file.

raw2tiff converts a raw byte sequence into TIFF.

tiff2bw converts a color TIFF image to grayscale.

tiff2pdf converts a TIFF image to a PDF document.

tiff2ps converts a TIFF image to a PostScript file.

tiff2rgba converts a wide variety of TIFF images into an RGBA TIFF image.

tiffcmp compares two TIFF files.

tiffcp copies (and possibly converts) a TIFF file.

tiffcrop selects, copies, crops, converts, extracts and/or processes one or more TIFF files.

tiffdither converts a grayscale image to bilevel using dithering.

tiffdump prints verbatim information about TIFF files.

tiffgt displays an image stored in a TIFF file.

tiffinfo prints information about TIFF files.

tiffmedian applies the median cut algorithm to data in a TIFF file.

tiffset sets the value of a TIFF header to a specified value.

tiffsplit splits a multi-image TIFF into single-image TIFF files.

libtiff.so contains the API functions used by the libtiff programs as well as other programs to read and write TIFF files.

libtiffxx.so contains the C++ API functions used by programs to read and write TIFF files.

10.25 libwebp-1.3.0


Introduction to libwebp

The libwebp package contains a library and support programs to encode and decode images in WebP format.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

libwebp Dependencies

libjpeg-turbo-2.1.5.1, libpng-1.6.39, libtiff-4.5.0, and SDL-1.2.15 (for improved 3D Acceleration)

Optional

Freeglut-3.4.0 and giflib-5.2.1

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/libwebp

Installation of libwebp

Install libwebp by running the following commands:

./configure --prefix=/usr           \
            --enable-libwebpmux     \
            --enable-libwebpdemux   \
            --enable-libwebpdecoder \
            --enable-libwebpextras  \
            --enable-swap-16bit-csp \
            --disable-static        &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--enable-swap-16bit-csp: This switch enables byte swap for 16 bit colorspaces.

--disable-static: This switch prevents installation of static versions of the libraries.

Contents

Installed Programs: cwebp, dwebp, gif2webp, img2webp, vwebp, webpinfo, and webpmux

Installed Library: libsharpyuv.so, libwebpdecoder.so, libwebpdemux.so, libwebpmux.so, and libwebp.so

Installed Directory: /usr/include/webp

Short Descriptions

cwebp compresses an image using the WebP format.

dwebp decompresses WebP files into PNG, PAM, PPM or PGM images.

gif2webp converts a GIF image to a WebP image.

img2webp creates an animated WebP file from a sequence of input images.

vwebp decompresses a WebP file and displays it in a window.

webpinfo prints out the cunk level structure of WebP files along with performing basic integrity checks.

webpmux creates animated WebP files from non-animated WebP images, extracts frames from animated WebP images, and manages XMP/EXIF metadata and the ICC profile.

libwebp.so contains the API functions for WebP encoding and decoding.

10.26 mypaint-brushes-1.3.1


Introduction to mypaint-brushes

The mypaint-brushes package contains brushes used by packages which use libmypaint.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

mypaint-brushes Dependencies

Required at runtime

libmypaint-1.6.1

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/mypaint-brushes

Installation of mypaint-brushes

Install mypaint-brushes by running the following commands:

./configure --prefix=/usr &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Contents

Installed Programs: None.

Installed Libraries: None.

Installed Directories: /usr/share/mypaint-data.

10.27 newt-0.52.23


Introduction to newt

Newt is a programming library for color text mode, widget based user interfaces. It can be used to add stacked windows, entry widgets, checkboxes, radio buttons, labels, plain text fields, scrollbars, etc., to text mode user interfaces. Newt is based on the S-Lang library.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

Newt Dependencies

Required

popt-1.19 and slang-2.3.3

GPM-1.20.7 (runtime)

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/newt

Installation of newt

Install newt by running the following command:

sed -e '/install -m 644 $(LIBNEWT)/ s/^/#/' \
    -e '/$(LIBNEWT):/,/rv/ s/^/#/'          \
    -e 's/$(LIBNEWT)/$(LIBNEWTSH)/g'        \
    -i Makefile.in                          &&

./configure --prefix=/usr           \
            --with-gpm-support      \
            --with-python=python3.11 &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

sed -e … -i Makefile.in: Disables installation of a static library.

--with-gpm-support: This switch enables mouse support for newt applications through GPM.

--with-python=python3.11: By giving explicitly the name of the directory where python modules reside, this switch prevents building the python2 module.

Contents

Installed Programs: whiptail

Installed Library: libnewt.so, whiptcl.so, and /usr/lib/python3.11/site-packages/_snack.so

Installed Directories: None

Short Descriptions

whiptail displays dialog boxes from shell scripts.

libnewt.so is the library for color text mode, widget based user interfaces.

10.28 opencv-4.7.0


Introduction to opencv

The opencv package contains graphics libraries mainly aimed at real-time computer vision.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

Additional Downloads

Note

One additional file that starts with “ippicv” (integrated performance primitives) will be automatically downloaded during the cmake portion of the build procedure. This download is specific to the system architecture.

opencv Dependencies

Required

CMake-3.25.2 and UnZip-6.0

FFmpeg-5.1.2, gst-plugins-base-1.22.0, GTK+-3.24.36, JasPer-4.0.0, libexif-0.6.24, libjpeg-turbo-2.1.5.1, libpng-1.6.39, libtiff-4.5.0, libwebp-1.3.0, v4l-utils-1.22.1, and xine-lib-1.2.13

Optional

apache-ant-1.10.13, Doxygen-1.9.6, Java-19.0.2, Python-2.7.18, blas, Cuda, Eigen, OpenEXR, GDAL, lapack, libdc1394, NumPy, Threading Building Blocks (TBB), and VTK - The Visualization Toolkit,

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/opencv

Installation of opencv

If you downloaded the optional modules, unpack them now:

tar -xf ../opencv_contrib-4.7.0.tar.gz

Install opencv by running the following commands:

mkdir build &&
cd    build &&

cmake -DCMAKE_INSTALL_PREFIX=/usr      \
      -DCMAKE_BUILD_TYPE=Release       \
      -DENABLE_CXX11=ON                \
      -DBUILD_PERF_TESTS=OFF           \
      -DWITH_XINE=ON                   \
      -DBUILD_TESTS=OFF                \
      -DENABLE_PRECOMPILED_HEADERS=OFF \
      -DCMAKE_SKIP_RPATH=ON            \
      -DBUILD_WITH_DEBUG_INFO=OFF      \
      -Wno-dev  ..                     &&
make

The package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

-DWITH_XINE=ON: This option instructs the make procedure to use xine-lib-1.2.13.

-DENABLE_PRECOMPILED_HEADERS=OFF: This option is needed for compatibility with gcc-6.1 and later.

-DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.7.0/modules: instructs the build system to build additional modules.

Contents

Installed Programs: opencv_annotation, opencv_interactive-calibration, opencv_model_diagnostics, opencv_version, opencv_visualisation, and setup_vars_opencv4.sh

Installed Libraries: libopencv_calib3d.so, libopencv_core.so, libopencv_dnn.so, libopencv_features2d.so, libopencv_flann.so, libopencv_gapi.so, libopencv_highgui.so, libopencv_imgcodecs.so, libopencv_imgproc.so, libopencv_ml.so, libopencv_objdetect.so, libopencv_photo.so, libopencv_stitching.so, libopencv_video.so, and libopencv_videoio.so

Installed Directories: /usr/include/opencv4, /usr/lib/cmake/opencv4, /usr/lib/python3.11/site-packages/cv2, /usr/share/licenses/opencv4, /usr/share/opencv4, and /usr/share/java/opencv4.

10.29 OpenJPEG-2.5.0


Introduction to OpenJPEG

OpenJPEG is an open-source implementation of the JPEG-2000 standard. OpenJPEG fully respects the JPEG-2000 specifications and can compress/decompress lossless 16-bit images.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

OpenJPEG Dependencies

Required

CMake-3.25.2

Optional

Little CMS-2.14, libpng-1.6.39, libtiff-4.5.0, and Doxygen-1.9.6 (to build the API documentation)

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/openjpeg2

Installation of OpenJPEG

Install OpenJPEG by running the following commands:

mkdir -v build &&
cd       build &&

cmake -DCMAKE_BUILD_TYPE=Release \
      -DCMAKE_INSTALL_PREFIX=/usr \
      -DBUILD_STATIC_LIBS=OFF .. &&
make

This package does not come with a test suite.

Now, as the root user:

make install &&

pushd ../doc &&
  for man in man/man?/* ; do
      install -v -D -m 644 $man /usr/share/$man
  done
popd

Contents

Installed Programs: opj_compress, opj_decompress, and opj_dump

Installed Libraries: libopenjp2.so

Installed Directories: /usr/include/openjpeg-2.5 and /usr/lib/openjpeg-2.5

Short Descriptions

opj_compress converts various image formats to the jpeg2000 format

opj_decompress converts jpeg2000 images to other image types

opj_dump reads in a jpeg2000 image and dumps the contents to stdout.

10.30 Pixman-0.42.2


Introduction to Pixman

The Pixman package contains a library that provides low-level pixel manipulation features such as image compositing and trapezoid rasterization.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

Pixman Dependencies

Optional

GTK+-2.24.33 and libpng-1.6.39 (for tests and demos)

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/pixman

Installation of Pixman

Install Pixman by running the following commands:

mkdir build &&
cd    build &&

meson --prefix=/usr --buildtype=release &&
ninja

To test the results, issue: ninja test.

Now, as the root user:

ninja install

Command Explanations

--buildtype=release: Specify a buildtype suitable for stable releases of the package, as the default may produce unoptimized binaries.

Contents

Installed Programs: None

Installed Library: libpixman-1.so

Installed Directory: /usr/include/pixman-1

Short Descriptions

libpixman-1.so contains functions that provide low-level pixel manipulation features.

10.31 Poppler-23.02.0


Introduction to Poppler

The Poppler package contains a PDF rendering library and command line tools used to manipulate PDF files. This is useful for providing PDF rendering functionality as a shared library.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

Additional Downloads

Poppler Encoding Data

The additional package consists of encoding files for use with Poppler. The encoding files are optional and Poppler will automatically read them if they are present. When installed, they enable Poppler to render CJK and Cyrillic properly.

Poppler Dependencies

Required

CMake-3.25.2, Fontconfig-2.14.2, and gobject-introspection-1.74.0

Boost-1.81.0, Cairo-1.17.6, Little CMS-2.14, libjpeg-turbo-2.1.5.1, libpng-1.6.39, nss-3.88.1, and OpenJPEG-2.5.0

Optional

cURL-7.88.1, gdk-pixbuf-2.42.10, git-2.39.2 (for downloading test files), GTK-Doc-1.33.2, GTK+-3.24.36, libtiff-4.5.0, Qt-5.15.8 (required for PDF support in Okular-22.12.2), and Qt-6.1 or later.

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/poppler

Installation of Poppler

Install Poppler by running the following commands:

mkdir build                         &&
cd    build                         &&

cmake  -DCMAKE_BUILD_TYPE=Release   \
       -DCMAKE_INSTALL_PREFIX=/usr  \
       -DTESTDATADIR=$PWD/testfiles \
       -DENABLE_UNSTABLE_API_ABI_HEADERS=ON \
       ..                           &&
make

In order to run the test suite, some testcases are needed and can be obtained only from a git repository. The command to download them is: git clone –depth 1 https://gitlab.freedesktop.org/poppler/test.git testfiles. Then issue: LC_ALL=en_US.UTF-8 make test.

Now, as the root user:

make install

To install the documentation, run the following commands as root:

install -v -m755 -d           /usr/share/doc/poppler-23.02.0 &&
cp -vr ../glib/reference/html /usr/share/doc/poppler-23.02.0

Poppler Data

If you downloaded the additional encoding data package, install it by issuing the following commands:

tar -xf ../../poppler-data-0.4.12.tar.gz &&
cd poppler-data-0.4.12

Now, as the root user:

make prefix=/usr install

Command Explanations

-DCMAKE_BUILD_TYPE=Release: This switch is used to apply a higher level of compiler optimizations.

-DTESTDATADIR=$PWD/testfiles: Tells the test programs where the auxiliary files are located.

-DENABLE_UNSTABLE_API_ABI_HEADERS=ON: Installs some old Xpdf headers required by certain programs.

-DENABLE_GTK_DOC=ON: Use this parameter if GTK-Doc is installed and you wish to rebuild and install the API documentation.

-DENABLE_BOOST=OFF: Use this parameter if you have not installed boost (the Splash backend for Qt5 recommends boost).

LC_ALL=en_US.UTF-8 make test: Runs the test suite. The environment variable LC_ALL=en_US.UTF-8 is only needed if the default locale does not include UTF-8.

Contents

Installed Programs: pdfattach, pdfdetach, pdffonts, pdfimages, pdfinfo, pdfseparate, pdfsig, pdftocairo, pdftohtml, pdftoppm, pdftops, pdftotext, and pdfunite

Installed Libraries: libpoppler.so, libpoppler-cpp.so, libpoppler-glib.so, and libpoppler-qt5.so

Installed Directories: /usr/include/poppler, /usr/share/poppler, and /usr/share/doc/poppler-23.02.0

Short Descriptions

pdfattach adds a new embedded file to an existing PDF file.

pdfdetach lists or extracts embedded files from PDF files.

pdffonts lists the fonts used in a PDF file along with various information for each font.

pdfimages saves images from a PDF file as PPM, PBM, or JPEG files.

pdfinfo prints the contents of the ‘Info’ dictionary (plus some other useful information) from a PDF file.

pdfseparate extracts single pages from a PDF file.

pdfsig verifies the digital signatures in a PDF document.

pdftocairo converts a PDF file to one of several formats (PNG, JPEG, PDF, PS, EPS, SVG) using the cairo output device of the poppler library.

pdftohtml converts a PDF file to HTML.

pdftoppm converts PDF files to PBM, PGM and PPM formats.

pdftops converts PDF files to Postscript format.

pdftotext converts PDF files to plain text.

pdfunite merges several PDF files, in the order of their occurrence on the command line, to one PDF output file.

libpoppler.so contains the API functions to render PDF files.

libpoppler-cpp.so is a C++ backend for rendering PDF files.

libpoppler-glib.so is a wrapper library used to interface the PDF rendering functions with GTK+.

libpoppler-qt5.so is a wrapper library used to interface the PDF rendering functions with Qt5.

10.32 Potrace-1.16


Introduction to Potrace

Potrace™ is a tool for transforming a bitmap (PBM, PGM, PPM, or BMP format) into one of several vector file formats.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

Potrace Dependencies

LLVM-15.0.7 (including clang)

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/potrace

Installation of Potrace

Install Potrace by running the following commands:

./configure --prefix=/usr                        \
            --disable-static                     \
            --docdir=/usr/share/doc/potrace-1.16 \
            --enable-a4                          \
            --enable-metric                      \
            --with-libpotrace                    &&
make

To run the test suite, issue: make check.

Now, as the root user:

make install

Command Explanations

--enable-a4: Use A4 as the default paper size.

--enable-metric: Use metric units (centimeters) as default

--disable-static: This switch prevents installation of static versions of the libraries.

--with-libpotrace: Install the library and headers.

Contents

Installed Programs: mkbitmap, potrace

Installed Libraries: libpotrace.so

Installed Directories: /usr/share/doc/potrace-1.16

Short Descriptions

mkbitmap transforms images into bitmaps with scaling and filtering.

potrace transforms bitmaps into vector graphics.

libpotrace.so is a library for transforming bitmaps into vector graphics.

10.33 Qpdf-11.2.0


Introduction to Qpdf

The Qpdf package contains command-line programs and a library that does structural, content-preserving transformations on PDF files.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

Qpdf Dependencies

Required

libjpeg-turbo-2.1.5.1

Optional

fop-2.8, GnuTLS-3.8.0, and sphinx-6.1.3

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/qpdf

Installation of Qpdf

Install Qpdf by running the following commands:

mkdir build &&
cd    build &&

cmake -DCMAKE_INSTALL_PREFIX=/usr \
      -DCMAKE_BUILD_TYPE=Release  \
      -DBUILD_STATIC_LIBS=OFF     \
      -DCMAKE_INSTALL_DOCDIR=/usr/share/doc/qpdf-11.2.0 \
      .. &&
make

To test the results, issue: ctest.

Now, as the root user:

make install

Contents

Installed Programs: fix-qdf, qpdf, and zlib-flate

Installed Library: libqpdf.so

Installed Directories: /usr/lib/cmake/qpdf, /usr/include/qpdf, and /usr/share/doc/qpdf-11.2.0

Short Descriptions

fix-qdf is used to repair PDF files in QDF form after editing.

qpdf is used to convert one PDF file to another equivalent PDF file.

zlib-flate is a raw zlib compression program.

libqpdf.so contains the Qpdf API functions.

10.34 qrencode-4.1.1


Introduction to qrencode

Qrencode is a fast and compact library for encoding data in a QR Code symbol, a 2D symbology that can be scanned by handheld terminals such as a mobile phone with a CCD sensor.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

Qrencode Dependencies

libpng-1.6.39

Optional

Doxygen-1.9.6 for generating documentation, and SDL2-2.26.3 for tests

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/qrencode

Installation of qrencode

Install libqrencode by running the following commands:

./configure --prefix=/usr &&
make

If you have installed Doxygen-1.9.6, you can build the documentation by issuing:

doxygen

The tests must be run after installing the package.

Now, as the root user:

make install

If you have built the optional documentation, install it as the root user:

install -vdm 755 /usr/share/doc/qrencode-4.1.1 &&
mv html/* /usr/share/doc/qrencode-4.1.1

To test the results, if you have passed the --with-tests option to configure, issue: make check.

Command Explanations

--with-tests: This option allows building the test programs. It requires SDL2-2.26.3.

--without-tools: This option prevents building the qrencode executable, removing the need for libpng-1.6.39.

Contents

Installed Program: qrencode

Installed Library: libqrencode.so

Installed Directory: /usr/share/doc/qrencode-4.1.1 (optional)

Short Descriptions

qrencode encodes input data in a QR Code and saves it as a PNG or EPS image.

libqrencode.so contains functions for encoding data in a QR code symbol.

10.35 sassc-3.6.2


Introduction to sassc

SassC is a wrapper around libsass, a CSS pre-processor language.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

Additional Downloads

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/sassc

Installation of sassc

First, build the library:

tar -xf ../libsass-3.6.5.tar.gz &&
pushd libsass-3.6.5 &&

autoreconf -fi &&

./configure --prefix=/usr --disable-static &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Build the command line wrapper:

popd &&
autoreconf -fi &&

./configure --prefix=/usr &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Contents

Installed Programs: sassc

Installed Libraries: libsass.so

Installed Directories: /usr/include/sass

Short Descriptions

sassc provides a command line interface to the libsass library.

10.36 woff2-1.0.2


Introduction to WOFF2

WOFF2 is a library for converting fonts from the TTF format to the WOFF 2.0 format. It also allows decompression from WOFF 2.0 to TTF. The WOFF 2.0 format uses the Brotli compression algorithm to compress fonts suitable for downloading in CSS @font-face rules.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

WOFF2 Dependencies

Required

Brotli-1.0.9 and CMake-3.25.2

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/woff2

Installation of WOFF2

Install WOFF2 by running the following commands:

mkdir out                           &&
cd    out                           &&
cmake -DCMAKE_INSTALL_PREFIX=/usr \
      -DCMAKE_BUILD_TYPE=Release .. &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Contents

Installed Program: None

Installed Libraries: libwoff2common.so, libwoff2dec.so and libwoff2enc.so

Installed Directory: /usr/include/woff2

Short Descriptions

libwoff2common.so provides shared data used by the libwoff2dec and libwoff2enc libraries.

libwoff2dec.so is the WOFF2 decoder library.

libwoff2enc.so is the WOFF2 encoder library.