Skip to the content.

9. General Libraries


Libraries contain code which is often required by more than one program. This has the advantage that each program doesn’t need to duplicate code (and risk introducing bugs), it just has to call functions from the libraries installed on the system. The most obvious example of a set of libraries is Glibc which is installed during the LFS book. This contains all of the C library functions which programs use.

There are two types of libraries: static and shared. Shared libraries (usually libXXX.so) are loaded into memory from the shared copy at runtime (hence the name). Static libraries (libXXX.a) are actually linked into the program executable file itself, thus making the program file larger. Quite often, you will find both static and shared copies of the same library on your system.

Generally, you only need to install libraries when you are installing software that needs the functionality they supply. In the BLFS book, each package is presented with a list of (known) dependencies. Thus, you can figure out which libraries you need to have before installing that program. If you are installing something without using BLFS instructions, usually the README or INSTALL file will contain details of the program’s requirements.

There are certain libraries which nearly everyone will need at some point. In this chapter these and some others are listed and it is explained why you may want to install them.

9.1 Apr-1.7.2


Introduction to Apr

The Apache Portable Runtime (APR) is a supporting library for the Apache web server. It provides a set of application programming interfaces (APIs) that map to the underlying Operating System (OS). Where the OS doesn’t support a particular function, APR will provide an emulation. Thus programmers can use the APR to make a program portable across different platforms.

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/apr

Installation of Apr

Fix an issue checking a location in a script template:

sed -e '/^case "$0"/s;$0;$(readlink -f $0);' \
    -i apr-config.in

Install Apr by running the following commands:

./configure --prefix=/usr    \
            --disable-static \
            --with-installbuilddir=/usr/share/apr-1/build &&
make

To test the results, issue: make test.

Now, as the root user:

make install

Command Explanations

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

Contents

Installed Program: apr-1-config

Installed Library: libapr-1.so

Installed Directories: /usr/include/apr-1 and /usr/share/apr-1

Short Descriptions

apr-1-config is a shell script used to retrieve information about the apr library in the system. It is typically used to compile and link against the library.

libapr-1.so is the Apache Portable Runtime library.

9.2 Apr-Util-1.6.3


Introduction to Apr Util

The Apache Portable Runtime Utility Library provides a predictable and consistent interface to underlying client library interfaces. This application programming interface assures predictable if not identical behavior regardless of which libraries are available on a given platform.

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

Package Information

Apr Util Dependencies

Required

Apr-1.7.2

Optional

Berkeley DB-5.3.28, FreeTDS, MariaDB-10.6.12 or MySQL, OpenLDAP-2.6.4, PostgreSQL-15.2, SQLite-3.40.1 and unixODBC-2.3.11

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/apr-util

Installation of Apr Util

Install Apr Util by running the following commands:

./configure --prefix=/usr       \
            --with-apr=/usr     \
            --with-gdbm=/usr    \
            --with-openssl=/usr \
            --with-crypto &&
make

To test the results, issue: make -j1 test. One test, testdbm, is known to fail.

Now, as the root user:

make install

Command Explanations

--with-gdbm=/usr: This switch enables the apr_dbm_gdbm-1.so plugin.

--with-openssl=/usr --with-crypto: These switches enable the apr_crypto_openssl-1.so plugin.

--with-berkeley-db=/usr: If you have installed Berkeley DB-5.3.28, use this switch to compile the apr_dbm_db-1.so plugin.

--with-ldap: If you have installed OpenLDAP-2.6.4, use this switch to compile the apr_ldap.so plugin.

Contents

Installed Program: apu-1-config

Installed Library: libaprutil-1.so

Installed Directory: /usr/lib/apr-util-1

Short Descriptions

apu-1-config is an APR-util script designed to allow easy command line access to APR-util configuration parameters

libaprutil-1.so contains functions that provide a predictable and consistent interface to underlying client library interfaces

9.3 Aspell-0.60.8


Introduction to Aspell

The Aspell package contains an interactive spell checking program and the Aspell libraries. Aspell can either be used as a library or as an independent spell checker.

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

Package Information

Additional Downloads

You’ll need to download at least one dictionary. The link below will take you to a page containing links to dictionaries in many languages.

Aspell Dependencies

Required

Which-2.21 (for the dictionaries)

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

Installation of Aspell

Install Aspell 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 &&
ln -svfn aspell-0.60 /usr/lib/aspell &&

install -v -m755 -d /usr/share/doc/aspell-0.60.8/aspell{,-dev}.html &&

install -v -m644 manual/aspell.html/* \
    /usr/share/doc/aspell-0.60.8/aspell.html &&

install -v -m644 manual/aspell-dev.html/* \
    /usr/share/doc/aspell-0.60.8/aspell-dev.html

If you do not plan to install Ispell, then copy the wrapper script ispell:

install -v -m 755 scripts/ispell /usr/bin/

If you do not plan to install Spell, then copy the wrapper script spell:

install -v -m 755 scripts/spell /usr/bin/

Command Explanations

ln -svfn aspell-0.60 /usr/lib/aspell: This command is useful for configuration of other applications, such as enchant-2.3.3.

Configuring Aspell

Configuration Information

After Aspell is installed, you must set up at least one dictionary. Install one or more dictionaries by running the following commands:

./configure &&
make

Now, as the root user:

make install

Contents

Installed Programs: aspell, aspell-import, precat, preunzip, prezip, prezip-bin, pspell-config, run-with-aspell, word-list-compress and optionally, ispell and spell.

Installed Libraries: libaspell.so and libpspell.so

Installed Directories: /usr/include/pspell and /usr/lib/aspell-0.60

Short Descriptions

aspell is a utility that can function as an ispell -a replacement, as an independent spell checker, as a test utility to test out Aspell features, and as a utility for managing dictionaries

ispell is a wrapper around aspell to invoke it in ispell compatible mode

spell is a wrapper around aspell to invoke it in spell compatible mode

aspell-import imports old personal dictionaries into Aspell

precat decompresses a prezipped file to stdout

preunzip decompresses a prezipped file

prezip is a prefix delta compressor, used to compress sorted word lists or other similar text files

prezip-bin is called by the various wrapper scripts to perform the actual compressing and decompressing

pspell-config displays information about the libpspell installation, mostly for use in build scripts

run-with-aspell is a script to help use Aspell as an ispell replacement

word-list-compress compresses or decompresses sorted word lists for use with the Aspell spell checker

libaspell.so contains spell checking API functions

libpspell.so is an interface to the libaspell library. All the spell checking functionality is now in libaspell but this library is included for backward compatibility

9.4 Boost-1.81.0


Introduction to Boost

Boost provides a set of free peer-reviewed portable C++ source libraries. It includes libraries for linear algebra, pseudorandom number generation, multithreading, image processing, regular expressions and unit testing.

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

Package Information

Boost Dependencies

Which-2.21

Optional

ICU-72.1 and Open MPI

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

Installation of Boost

A change in this version of boost breaks the few packages which use the phoenix module when compiled with current GCC. In BLFS, that affects LibreOffice-7.5.0.3. Fix this with the following command:

sed -i '/#include.*phoenix.*tuple.hpp.*/d' \
  boost/phoenix/stl.hpp

This package can be built with several jobs running in parallel. In the instructions below, <N> stands for the number of jobs. Install Boost by running the following commands:

./bootstrap.sh --prefix=/usr --with-python=python3 &&
./b2 stage -j<N> threading=multi link=shared

To run the Boost.Build’s regression test, issue pushd tools/build/test; python3 test_all.py; popd. With python-3.10.x all 168 tests should pass. With Python-3.11.2, 20 tests fail for undetermined reasons.

To run every library’s regression tests, issue pushd status; ../b2; popd. A few tests may fail. They take a very long time (over 119 SBU at -j4) and use a very large amount of disk space (46 GB). You should use the -jN switch to speed them up.

Note

Boost installs many versioned directories in /usr/lib/cmake. If a new version of Boost is installed over a previous version, the older cmake directories need to be explicitly removed. To do this, run as the root user:

rm -rf /usr/lib/cmake/[Bb]oost*

before installing the new version.

Now, as the root user:

./b2 install threading=multi link=shared

Command Explanations

sed -i '/#include ...: This removes the inclusion of boost/phoenix/stl/tuple.hpp from this header-only library, allowing applications which use it to link using recent C++. An alternative is to edit /usr/include/boost/phoenix/stl.hpp if this version of boost has already been installed without this sed.

threading=multi: This parameter ensures that Boost is built with multithreading support.

link=shared: This parameter ensures that only shared libraries are created, except for libboost_exception and libboost_test_exec_monitor which are created as static. Most people will not need the static libraries, and most programs using Boost only use the headers. Omit this parameter if you do need static libraries.

--with-python=python3: This switch ensures Python3 is used if Python2 is installed.

-jN: This switch may be added to the b2 command lines, to run up to N processes in parallel.

Contents

Installed Programs: None

Installed Libraries: libboost_atomic.so, libboost_chrono.so, libboost_container.so, libboost_context.so, libboost_contract.so, libboost_coroutine.so, libboost_date_time.so, libboost_exception.a, libboost_fiber.so, libboost_filesystem.so, libboost_graph.so, libboost_iostreams.so, libboost_json.so, libboost_locale.so, libboost_log_setup.so, libboost_log.so, libboost_math_c99.so, libboost_math_c99f.so, libboost_math_c99l.so, libboost_math_tr1.so, libboost_math_tr1f.so, libboost_math_tr1l.so, libboost_nowide.so, libboost_numpy39.so, libboost_prg_exec_monitor.so, libboost_program_options.so, libboost_python311.so, libboost_random.so, libboost_regex.so, libboost_serialization.so, libboost_stacktrace_addr2line.so, libboost_stacktrace_basic.so, libboost_stacktrace_noop.so, libboost_system.so, libboost_test_exec_monitor.a, libboost_thread.so, libboost_timer.so, libboost_type_erasure.so, libboost_unit_test_framework.so, libboost_wave.so, and libboost_wserialization.so

Installed Directory: /usr/include/boost.

9.5 brotli-1.0.9


Introduction to Brotli

Brotli provides a general-purpose lossless compression algorithm that compresses data using a combination of a modern variant of the LZ77 algorithm, Huffman coding and 2nd order context modeling. Its libraries are particularly used for WOFF2 fonts on webpages.

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

Package Information

Brotli Dependencies

Required

CMake-3.25.2

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

Installation of Brotli

At first, fix an issue in pkg-config files:

sed -i 's@-R..libdir.@@' scripts/*.pc.in

Install brotli by running the following commands:

mkdir out &&
cd    out &&

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

To test the results, issue: make test.

Now, as the root user:

make install &&
cd ..

If desired, build and install the Python3 bindings as the root user:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD &&
pip3 install --no-index --find-links dist --no-cache-dir --no-user Brotli

Contents

Installed Programs: brotli

Installed Libraries: libbrotlicommon{-static.a,.so}, libbrotlidec{,-static.a,.so}, and libbrotlienc{,-static.a,.so}

Installed Directory: /usr/include/brotli /usr/lib/python3.11/site-packages/Brotli-1.0.9.dist-info

Short Descriptions

brotli can compress or decompress files, or test the integrity of compressed files

libbrotlicommon{-static.a,.so}is the Brotli common dictionary library

libbrotlidec{-static.a,.so} is the Brotli decoder library

libbrotlienc{-static.a,.so} is the Brotli common encoder library

9.6 CLucene-2.3.3.4


Introduction to CLucene

CLucene is a C++ version of Lucene, a high performance text search engine.

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

Package Information

Additional Downloads

CLucene Dependencies

Required

CMake-3.25.2

Boost-1.81.0

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

Installation of CLucene

Install CLucene by running the following commands:

patch -Np1 -i ../clucene-2.3.3.4-contribs_lib-1.patch &&

sed -i '/Misc.h/a #include <ctime>' src/core/CLucene/document/DateTools.cpp &&

mkdir build &&
cd    build &&

cmake -DCMAKE_INSTALL_PREFIX=/usr \
      -DBUILD_CONTRIBS_LIB=ON .. &&
make

Now, as the root user:

make install

Command Explanations

-DBUILD_CONTRIBS_LIB=ON: This cmake variable enables building the CLucene contribs library necessary for running applications that use language specific text analyzers like LibreOffice for example.

Contents

Installed Programs: None

Installed Libraries: libclucene-contribs-lib.so, libclucene-core.so, and libclucene-shared.so

Installed Directories: /usr/include/CLucene and /usr/lib/CLuceneConfig.cmake

9.7 dbus-glib-0.112


Introduction to D-Bus GLib

The D-Bus GLib package contains GLib interfaces to the D-Bus API.

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

Package Information

D-Bus GLib Dependencies

Required

dbus-1.14.6 and GLib-2.74.5

Optional

GTK-Doc-1.33.2

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/dbus-glib

Installation of D-Bus GLib

Install D-Bus GLib by running the following commands:

./configure --prefix=/usr     \
            --sysconfdir=/etc \
            --disable-static &&
make

To test the results, issue: make check. Note that more comprehensive tests can be run by following the same method used in D-Bus instructions, which requires building the package twice.

Now, as the root user:

make install

Command Explanations

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

--enable-gtk-doc: Use this parameter if GTK-Doc is installed and you wish to rebuild and install the API documentation.

Contents

Installed Program: dbus-binding-tool

Installed Library: libdbus-glib-1.so

Installed Directories: /usr/share/gtk-doc/html/dbus-glib

Short Descriptions

dbus-binding-tool is a tool used to interface with the D-Bus API

libdbus-glib-1.so contains GLib interface functions to the D-Bus API.

9.8 Double-conversion-3.2.1


Introduction to Double-conversion

The Double-conversion package contains a library that facilitates binary-to-decimal and decimal-to-binary routines for IEEE doubles.

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

Package Information

Double-conversion Dependencies

Required

CMake-3.25.2

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/double-conversion

Installation of Double-conversion

Install Double-conversion by running the following commands:

mkdir build &&
cd    build &&

cmake -DCMAKE_INSTALL_PREFIX=/usr \
      -DBUILD_SHARED_LIBS=ON      \
      -DBUILD_TESTING=ON          \
      ..                          &&
make

To test the results, issue: make test.

Now, as the root user:

make install

Command Explanations

-DBUILD_SHARED_LIBS=ON: This switch forces cmake to build a shared version of the library instead of the static version.

-DBUILD_TESTING=ON: This switch builds the test programs.

Contents

Installed Programs: None

Installed Libraries: libdouble-conversion.so

Installed Directories: /usr/include/double-conversion

Short Descriptions

libdouble-conversion.so provides binary-to-decimal and decimal-to-binary routines for IEEE doubles

9.9 duktape-2.7.0


Introduction to duktape

duktape is an embeddable Javascript engine, with a focus on portability and compact footprint.

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/duktape

Installation of duktape

Install duktape by running the following commands:

sed -i 's/-Os/-O2/' Makefile.sharedlibrary
make -f Makefile.sharedlibrary INSTALL_PREFIX=/usr

Now, as the root user:

make -f Makefile.sharedlibrary INSTALL_PREFIX=/usr install

Contents

Installed Programs: None

Installed Libraries: libduktape.so and libduktaped.so

Installed Directories: None

Short Descriptions

libduktape.so is an embeddable Javascript engine.

9.10 enchant-2.3.3


Introduction to enchant

The enchant package provides a generic interface into various existing spell checking libraries.

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

Package Information

enchant Dependencies

Required

GLib-2.74.5

Aspell-0.60.8

Optional

dbus-glib-0.112, Doxygen-1.9.6, Hspell, Hunspell, Nuspell, Voikko, and unittest-cpp (required for tests)

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

Installation of enchant

Install enchant by running the following commands:

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

To run tests, unittest-cpp must be installed and the --enable-relocatable option passed to configure above. If these conditions are present, the tests may be run with make check.

Now, as the root user:

make install

Command Explanations

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

Configuring enchant

Config Files

~/.enchant and /usr/share/enchant/enchant.ordering

Configuration Information

You can test your installation and configuration by creating a test file and running the following commands (you can replace the en_GB dictionary by any other downloaded when installing Aspell-0.60.8):

cat > /tmp/test-enchant.txt << "EOF"
Tel me more abot linux
Ther ar so many commads
EOF

enchant-2 -d en_GB -l /tmp/test-enchant.txt &&
enchant-2 -d en_GB -a /tmp/test-enchant.txt

You will see a list of the misspelled words followed by a list of alternatives for them.

See more details in the enchant manual page.

Contents

Installed Programs: enchant-2 and enchant-lsmod-2

Installed Libraries: libenchant-2.so

Installed Directories: /usr/include/enchant-2, /usr/lib/enchant-2, and /usr/share/enchant

Short Descriptions

enchant-2 is a spellchecker

enchant-lsmod-2 lists available backends, languages, and dictionaries

libenchant-2.so contains spell checking interface API functions.

9.11 Exempi-2.6.3


Introduction to Exempi

Exempi is an implementation of XMP (Adobe’s Extensible Metadata Platform).

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

Package Information

Exempi Dependencies

Required

Boost-1.81.0

Optional

Valgrind-3.20.0

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

Installation of Exempi

If you intend to run the regression tests, first remove a test that depends on an apparently proprietary Adobe SDK:

sed -i -r '/^\s?testadobesdk/d' exempi/Makefile.am &&
autoreconf -fiv

Install Exempi 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 Program: exempi

Installed Library: libexempi.so

Installed Directory: /usr/include/exempi-2.0

Short Descriptions

exempi is a command line tool to manipulate XMP metadata

libexempi.so is a library used to parse XMP metadata.

9.12 fftw-3.3.10


Introduction to fftw

FFTW is a C subroutine library for computing the discrete Fourier transform (DFT) in one or more dimensions, of arbitrary input size, and of both real and complex data (as well as of even/odd data, i.e. the discrete cosine/sine transforms or DCT/DST).

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/fftw

Installation of fftw

Note

We build fftw three times for different libraries in different numerical precisions: the default double precision floating point, the older 32-bit (single precision) version named float which sacrifices precision for speed, and the long double which offers increased precision at the cost of slower execution.

The first build is for double precision arithmetic. Install fftw by running the following commands:

./configure --prefix=/usr    \
            --enable-shared  \
            --disable-static \
            --enable-threads \
            --enable-sse2    \
            --enable-avx     \
            --enable-avx2    &&
make

To test the results, issue: make check. On 32-bit systems, the tests can take substantially longer than they would on 64-bit machines.

Now, as the root user:

make install

Now build single precision:

make clean &&

./configure --prefix=/usr    \
            --enable-shared  \
            --disable-static \
            --enable-threads \
            --enable-sse2    \
            --enable-avx     \
            --enable-avx2    \
            --enable-float   &&
make

As the root user:

make install

Finally, build long double precision:

make clean &&

./configure --prefix=/usr    \
            --enable-shared  \
            --disable-static \
            --enable-threads \
            --enable-long-double &&
make

As the root user:

make install

Command Explanations

--enable-shared --disable-static: Use shared libs instead of static libs.

--enable-threads: This enables libfftw3_threads.so to be compiled. It is used by e.g. the gimp plugin from G’MIC.

--enable-{sse2,avx,avx2}: These enables building the optimized routines using SSE2, AVX, and AVX2 instructions. FFTW will check if these routines can be really used on the current CPU when the FFTW library is loaded, so a FFTW build with these routines enabled can still run on a CPU without SSE2, AVX, or AVX512. These options are not compatible with --enable-long-double.

--enable-float: This enables building the library that uses single precision floating point arithmetic. It is faster but less precise than the default double precision library. The library will be called libfftw3f.so needed by PulseAudio-16.1.

--enable-long-double: This enables building the library that uses higher precision long-double floating point arithmetic. The library will be called libfftw3l.so.

--enable-avx512: This enables building the optimized routines using AVX512F instructions. FFTW will check if these routines can be really used on the current CPU when the FFTW library is loaded, so a FFTW build with these routines enabled can still run on a CPU without AVX512F. Use this option if the FFTW build will be used on a CPU with AVX512F. This option is not compatible with --enable-long-double.

Contents

Installed Programs: fftw-wisdom and fftw-wisdom-to-conf

Installed Libraries: libfftw3.so, libfftw3_threads.so, libfftw3f.so, libfftw3f_threads.so, libfftw3l.so and libfftw3l_threads.so

Installed Directories: None

Short Descriptions

fftw-wisdom is a utility to generate FFTW wisdom files, which contain saved information about how to optimally compute (Fourier) transforms of various sizes

fftw-wisdom-to-conf is a utility to generate C configuration routines from FFTW wisdom files, where the latter contain saved information about how to optimally compute (Fourier) transforms of various sizes

libfftw3.so is the Fast Fourier Transform library

libfftw3_threads.so is the threaded Fast Fourier Transform library

libfftw3f.so is the single-precision Fast Fourier Transform library, described as “float” for historic reasons

libfftw3f_threads.so is the threaded single-precision Fast Fourier Transform library

libfftw3l.so is the long double Fast Fourier Transform library

libfftw3l_threads.so is the threaded long double Fast Fourier Transform library.

9.13 GLib-2.74.5


Introduction to GLib

The GLib package contains low-level libraries useful for providing data structure handling for C, portability wrappers and interfaces for such runtime functionality as an event loop, threads, dynamic loading and an object system.

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

Package Information

Additional Downloads

GLib Dependencies

libxslt-1.1.37 and pcre2-10.42

Optional

dbus-1.14.6 (for some tests), Fuse-3.13.1 and bindfs (both needed for one test), GDB-13.1 (for bindings), docbook-xml-4.5, docbook-xsl-nons-1.79.2, GTK-Doc-1.33.2 (to build API documentation), glib-networking-2.74.0 (for some tests, but this is a circular dependency), and sysprof-3.46.0

Additional Runtime Dependencies

gobject-introspection-1.74.0 (should be installed before gtk+, atk, etc.)

Quoted directly from the INSTALL file: “Some of the mimetype-related functionality in GIO requires the update-mime-database and update-desktop-database utilities”, which are part of shared-mime-info-2.2 and desktop-file-utils-0.26, respectively. These two utilities are also needed for some tests.

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

Installation of GLib

If desired, apply the optional patch. In many cases, applications that use this library, either directly or indirectly via other libraries such as GTK+-3.24.36, output numerous warnings when run from the command line. This patch enables the use of an environment variable, GLIB_LOG_LEVEL, that suppresses unwanted messages. The value of the variable is a digit that corresponds to:

1 Alert

2 Critical

3 Error

4 Warning

5 Notice

For instance export GLIB_LOG_LEVEL=4 will skip output of Warning and Notice messages (and Info/Debug messages if they are turned on). If GLIB_LOG_LEVEL is not defined, normal message output will not be affected.

patch -Np1 -i ../glib-2.74.5-skip_warnings-1.patch

Warning

If a previous version of glib is installed, move the headers out of the way so that later packages do not encounter conflicts:

if [ -e /usr/include/glib-2.0 ]; then
    rm -rf /usr/include/glib-2.0.old &&
    mv -vf /usr/include/glib-2.0{,.old}
fi

Install GLib by running the following commands:

mkdir build &&
cd    build &&

meson --prefix=/usr       \
      --buildtype=release \
      -Dman=true          \
      ..                  &&
ninja

Note

If libxslt-1.1.37 is installed, the above command may indicate several (about 33) errors that start with “Error: no ID for constraint linkend:” when generating the man pages. These are harmless.

The GLib test suite requires desktop-file-utils for some tests. However, desktop-file-utils requires GLib in order to compile; therefore, you must first install GLib and then run the test suite.

Now, as the root user:

ninja install &&

mkdir -p /usr/share/doc/glib-2.74.5 &&
cp -r ../docs/reference/{gio,glib,gobject} /usr/share/doc/glib-2.74.5

You should now install desktop-file-utils-0.26 and shared-mime-info-2.2 and proceed to run the test suite.

Warning

Do not run the test suite as root or some tests will fail unexpectedly and leave some non-FHS-compliant directories in the /usr hierarchy.

To test the results, after having installed the package, issue: LC_ALL=C ninja test as a non-root user. One test named glib:glib / error is known to fail.

Command Explanations

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

-Dman=true: This switch causes the build to create and install the package man pages.

-Dgtk_doc=true: This switch causes the build to create and install the API documentation.

Contents

Installed Programs: gapplication, gdbus, gdbus-codegen, gio, gio-querymodules, glib-compile-resources, glib-compile-schemas, glib-genmarshal, glib-gettextize, glib-mkenums, gobject-query, gresource, gsettings, gtester, and gtester-report

Installed Libraries: libgio-2.0.so, libglib-2.0.so, libgmodule-2.0.so, libgobject-2.0.so, and libgthread-2.0.so

Installed Directories: /usr/include/gio-unix-2.0, /usr/include/glib-2.0, /usr/lib/glib-2.0, /usr/share/glib-2.0, /usr/share/doc/glib-2.74.5, and /usr/share/gtk-doc/html/{gio,glib,gobject} (optional)

Short Descriptions

gapplication can be used to start applications and to send messages to already-running instances of other applications

gdbus is a simple tool used for working with D-Bus objects

gdbus-codegen is used to generate code and/or documentation for one or more D-Bus interfaces

gio is a utility that makes many GIO features available from the command line

gio-querymodules is used to create a giomodule.cache file in the listed directories. This file lists the implemented extension points for each module that has been found

glib-compile-resources is used to read the resource description from a file and the files that it references to create a binary resource bundle that is suitable for use with the GResource API

glib-compile-schemas is used to compile all the GSettings XML schema files in a directory into a binary file with the name gschemas.compiled that can be used by GSettings

glib-genmarshal is a C code marshaller generation utility for GLib closures

glib-gettextize is a variant of the gettext internationalization utility

glib-mkenums is a C language enum description generation utility

gobject-query is a small utility that draws a tree of types

gresource offers a simple command line interface to GResource

gsettings offers a simple command line interface to GSettings

gtester is a test running utility

gtester-report is a test report formatting utility

GLib libraries contain low-level core libraries for the GIMP Toolkit.

9.14 GLibmm-2.66.5


Introduction to GLibmm

The GLibmm package is a set of C++ bindings for GLib.

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

Package Information

GLibmm Dependencies

Required

GLib-2.74.5 and libsigc++-2.12.0

Optional

Doxygen-1.9.6, glib-networking-2.74.0 (for tests), GnuTLS-3.8.0 (for tests), libxslt-1.1.37, and mm-common

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

Installation of GLibmm

Install GLibmm 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

Contents

Installed Programs: None

Installed Libraries: libgiomm-2.4.so, libglibmm-2.4.so and libglibmm_generate_extra_defs-2.4.so

Installed Directories: /usr/lib/g{io,lib}mm-2.4 and /usr/include/g{io,lib}mm-2.4

Short Descriptions

libgiomm-2.4.so contains the GIO API classes

libglibmm-2.4.so contains the GLib API classes.

9.15 GMime-3.2.7


Introduction to GMime

The GMime package contains a set of utilities for parsing and creating messages using the Multipurpose Internet Mail Extension (MIME) as defined by the applicable RFCs. See the GMime web site for the RFCs resourced. This is useful as it provides an API which adheres to the MIME specification as closely as possible while also providing programmers with an extremely easy to use interface to the API functions.

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

Package Information

GMime Dependencies

Required

GLib-2.74.5 and libgpg-error-1.46

gobject-introspection-1.74.0 and libidn2-2.3.4

Optional

DocBook-utils-0.6.14, GPGME-1.18.0, GTK-Doc-1.33.2, libnsl-2.0.0, Vala-0.56.4, and Gtk# (requires Mono)

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

Installation of GMime

Install GMime 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.

--enable-gtk-doc: Use this parameter if GTK-Doc is installed and you wish to rebuild and install the API documentation.

Contents

Installed Programs: None

Installed Library: libgmime-3.0.so

Installed Directories: /usr/include/gmime-3.0 and /usr/share/gtk-doc/html/gmime-3.0

Short Descriptions

libgmime-3.0.so contains API functions used by programs that need to comply to the MIME standards.

9.16 gobject-introspection-1.74.0


Introduction to GObject Introspection

The GObject Introspection is used to describe the program APIs and collect them in a uniform, machine readable format.

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

Package Information

GObject Introspection Dependencies

Required

GLib-2.74.5

Optional

Cairo-1.17.6 (required for the tests), Gjs-1.74.1 (to satisfy one test), GTK-Doc-1.33.2, Mako-1.2.4, and Markdown-3.4.1

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/gobject-introspection

Installation of GObject Introspection

Install GObject Introspection 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.

-Dgtk_doc=true: Build and install the documentation.

-Dcairo=enabled: Use cairo for tests.

-Ddoctool=enabled: Install g-ir-doc-tool and run related tests. You must have Mako-1.2.4 and Markdown-3.4.1 installed in order to install this utility.

Contents

Installed Program: g-ir-annotation-tool, g-ir-compiler, g-ir-doc-tool, g-ir-generate, g-ir-inspect, and g-ir-scanner

Installed Libraries: libgirepository-1.0.so and _giscanner.cpython-311--linux-gnu.so

Installed Directories: /usr/include/gobject-introspection-1.0, /usr/lib/girepository-1.0, /usr/lib/gobject-introspection, /usr/share/gir-1.0, and /usr/share/gobject-introspection-1.0

Short Descriptions

g-ir-annotation-tool creates or extracts annotation data from GI typelibs

g-ir-compiler converts one or more GIR files into one or more typelib

g-ir-doc-tool generates Mallard files that can be viewed with yelp or rendered to HTML with yelp-build from yelp-tools

g-ir-inspect is a utility that gives information about a GI typelib

g-ir-generate is a GIR generator that uses the repository API

g-ir-scanner is a tool which generates GIR XML files by parsing headers and introspecting GObject based libraries

libgirepository-1.0.so provides an API to access the typelib metadata.

9.17 Gsl-2.7.1


Introduction to Gsl

The GNU Scientific Library (GSL) is a numerical library for C and C++ programmers. It provides a wide range of mathematical routines such as random number generators, special functions and least-squares fitting.

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

Package Information

Gsl Dependencies

Optional

sphinx_rtd_theme-1.2.0

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

Installation of Gsl

Install Gsl by running the following commands:

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

If you have sphinx_rtd_theme-1.2.0 installed, build the documentation with:

make html

To test the results, issue: make check.

Now, as the root user:

make install

If you built the documentation, install it (as root) with:

mkdir                   /usr/share/doc/gsl-2.7.1 &&
cp -R doc/_build/html/* /usr/share/doc/gsl-2.7.1

Command Explanations

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

Contents

Installed Programs: gsl-config, gsl-histogram, and gsl-randist

Installed Libraries: libgslcblas.so and libgsl.so

Installed Directory: /usr/include/gsl and /usr/share/doc/gsl-2.7.1

Short Descriptions

gsl-config is a shell script to get the version number and compiler flags of the installed Gsl library

gsl-histogram is a demonstration program for the GNU Scientific Library that computes a histogram from data taken from stdin

gsl-randist is a demonstration program for the GNU Scientific Library that generates random samples from various distributions

libgslcblas.so contains functions that implement a C interface to Basic Linear Algebra Subprograms

libgsl.so contains functions that provide a collection of numerical routines for scientific computing

9.18 gspell-1.12.0


Introduction to gspell

The gspell package provides a flexible API to add spell checking to a GTK+ application.

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

Package Information

gspell Dependencies

Required

enchant-2.3.3, ICU-72.1, and GTK+-3.24.36

Optional

gobject-introspection-1.74.0, GTK-Doc-1.33.2, Vala-0.56.4, and Valgrind-3.20.0

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

Installation of gspell

Install gspell by running the following commands:

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

To test the results, issue: make check. The tests must be run in an X session. One test, test-checker, is known to fail if the external package Hunspell is not installed.

Now, as the root user:

make install

Contents

Installed Programs: gspell-app1

Installed Libraries: libgspell-1.so

Installed Directories: /usr/include/gspell-1 and /usr/share/gtk-doc/html/gspell-1.0

Short Descriptions

gspell-app1 checks the spelling of a text entered in a window

libgspell-1.so is the gspell API library.

9.19 ICU-72.1


Introduction to ICU

The International Components for Unicode (ICU) package is a mature, widely used set of C/C++ libraries providing Unicode and Globalization support for software applications. ICU is widely portable and gives applications the same results on all platforms.

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

Package Information

ICU Dependencies

Optional

LLVM-15.0.7 (with Clang), and Doxygen-1.9.6 (for documentation)

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

Installation of ICU

Note

This package expands to the directory icu.

Note

If clang++ is available, it will be used in the mistaken belief that g++ might not support C++11, even though configure has tested for that. If using g++ there will be an unnecessary warning at the end of configure. Building with g++ also takes longer than the estimated SBU shown.

Install ICU by running the following commands:

cd source                                    &&

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

To test the results, issue: make check.

Now, as the root user:

make install

Contents

Installed Programs: derb, escapesrc, genbrk, genccode, gencfu, gencmn, gencnval, gendict, gennorm2, genrb, gensprep, icu-config, icuexportdata, icuinfo, icupkg, makeconv, pkgdata, and uconv

Installed Libraries: libicudata.so, libicui18n.so, libicuio.so, libicutest.so, libicutu.so, and libicuuc.so

Installed Directories: /usr/include/unicode, /usr/lib/icu, and /usr/share/icu

Short Descriptions

derb disassembles a resource bundle

escapesrc converts “\u” escaped characters into unicode characters

genbrk compiles ICU break iteration rules source files into binary data files

genccode generates C or platform specific assembly code from an ICU data file

gencfu reads in Unicode confusable character definitions and writes out the binary data

gencmn generates an ICU memory-mappable data file

gencnval compiles the converter’s aliases file

gendict compiles word lists into ICU string trie dictionaries

gennorm2 builds binary data files with Unicode normalization data

genrb compiles a resource bundle

gensprep compiles StringPrep data from filtered RFC 3454 files

icu-config outputs ICU build options

icuinfo outputs configuration information about the current ICU

icupkg extracts or modifies an ICU .dat archive

makeconv compiles a converter table

pkgdata packages data for use by ICU

uconv converts data from one encoding to another

libicudata.so is the data library

libicui18n.so is the internationalization (i18n) library

libicuio.so is the ICU I/O (unicode stdio) library

libicutest.so is the test library

libicutu.so is the tool utility library

libicuuc.so is the common library

9.20 inih-56


Introduction to inih

This package is a simple .INI file parser written in C.

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/inih

Installation of inih

Install inih 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

Contents

Installed Program: None

Installed Libraries: libinih.so, libINIReader.so

Installed Directories: None

9.21 Intel-gmmlib-22.3.4


Introduction to Intel-gmmlib

The Intel-gmmlib package contains the Intel Graphics Memory Management Library, which provides device specific memory and buffer management functions for the Intel Media Driver for VAAPI and the Intel Graphics Computer Runtime for OpenCL (TM).

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

Package Information

Note

The tarball intel-gmmlib-22.3.4.tar.gz will extract to the directory gmmlib-intel-gmmlib-22.3.4.

Intel-gmmlib Dependencies

Required

CMake-3.25.2

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/intel-gmmlib

Installation of Intel-gmmlib

Install Intel-gmmlib by running the following commands:

mkdir build &&
cd    build &&

cmake -DCMAKE_INSTALL_PREFIX=/usr   \
      -DBUILD_TYPE=Release          \
      -Wno-dev ..                   &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Contents

Installed Programs: None

Installed Libraries: libigdgmm.so

Installed Directories: /usr/include/igdgmm

Short Descriptions

libigdgmm.so contains functions that provide Memory Management functions for Intel Graphics Drivers

9.22 Jansson-2.14


Introduction to Jansson

The Jansson package contains a library used to encode, decode, and manipulate JSON data.

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/jansson

Installation of Jansson

First fix one of the tests:

sed -e "/DT/s;| sort;| sed 's/@@libjansson.*//' &;" \
    -i test/suites/api/check-exports

Install jansson 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

Contents

Installed Programs: None

Installed Library: libjansson.so

Installed Directories: None

Short Descriptions

libjansson.so contains an API for encoding, decoding, and manipulating JSON data

9.23 JS-102.8.0


Introduction to JS

JS (also referred as SpiderMonkey) is Mozilla’s JavaScript and WebAssembly Engine, written in C++ and Rust. In BLFS, the source code of JS is taken from Firefox.

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

Package Information

JS102 Dependencies

Required

ICU-72.1, rustc-1.67.1, and Which-2.21

LLVM-15.0.7 (with Clang, required for 32-bit systems without SSE2 capabilities)

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

Installation of JS

Note

Unlike most other packages in BLFS, the instructions below require you to untar firefox-102.8.0esr.tar.xz and change into the firefox-102.8.0 folder.

Extracting the tarball will reset the permissions of the current directory to 0755 if you have permission to do that. If you do this in a directory where the sticky bit is set, such as /tmp it will end with error messages:

tar: .: Cannot utime: Operation not permitted
tar: .: Cannot change mode to rwxr-xr-t: Operation not permitted
tar: Exiting with failure status due to previous errors

This does finish with non-zero status, but it does NOT mean there is a real problem. Do not untar as the root user in a directory where the sticky bit is set - that will unset it.

Install JS by running the following commands:

Note

If you are compiling this package in chroot you must do two things. First, as the root user, ensure that /dev/shm is mounted. If you do not do this, the Python configuration will fail with a traceback report referencing /usr/lib/pythonN.N/multiprocessing/synchronize.py. Run:

mountpoint -q /dev/shm || mount -t tmpfs devshm /dev/shm

Second, either as the root user export the $SHELL environment variable using export SHELL=/bin/sh or else prepend SHELL=/bin/sh when running the configure command.

Compiling the C++ code respects $MAKEFLAGS and defaults to ‘j1’, the rust code will use all processors.

First remove an obsolete flag in python code, that has been removed in python-3.11:

grep -rl \"rU\" | xargs sed -i 's/"rU"/"r"/'

Then run:

mkdir obj &&
cd    obj &&

sh ../js/src/configure.in --prefix=/usr            \
                          --with-intl-api          \
                          --with-system-zlib       \
                          --with-system-icu        \
                          --disable-jemalloc       \
                          --disable-debug-symbols  \
                          --enable-readline        &&
make

To run the JS test suite, issue: make -C js/src check-jstests JSTESTS_EXTRA_ARGS=”–timeout 300 –wpt=disabled”. It’s recommended to redirect the output into a log. Because we are building with system ICU, more than one hundred tests (out of a total of more than 50,000) are known to fail.

To run the JIT test suite, issue: make -C js/src check-jit-test JITTEST_EXTRA_ARGS=”–timeout 300”.

Caution

An issue in the installation process causes any running program which links to JS102 shared library (for example, GNOME Shell) to crash if JS102 is upgraded or reinstalled. To work around this issue, remove the old version of the JS102 shared library before installation:

rm -fv /usr/lib/libmozjs-102.so

Now, as the root user:

make install &&
rm -v /usr/lib/libjs_static.ajs &&
sed -i '/@NSPR_CFLAGS@/d' /usr/bin/js102-config

Command Explanations

sh ../js/src/configure.in: configure.in is actually a shell script, but the executable bit is not set in its permission mode so it’s needed to explicitly run it with sh.

--with-intl-api: This enables the internationalization functions required by Gjs.

--with-system-*: These parameters allow the build system to use system versions of the above libraries. These are required for stability.

--enable-readline: This switch enables Readline support in the JS shell.

--disable-jemalloc: This switch disables the internal memory allocator used in JS102. jemalloc is only intended for the Firefox browser environment. For other applications using JS102, the application may crash as items allocated in the jemalloc allocator are freed on the system (glibc) allocator.

--disable-debug-symbols: Don’t generate debug symbols since they are very large and most users won’t need it. Remove it if you want to debug JS102.

rm -v /usr/lib/libjs_static.ajs: Remove a large static library which is not used by any BLFS package.

sed -i ‘/@NSPR_CFLAGS@/d’ /usr/bin/js102-config: Prevent js102-config from using buggy CFLAGS.

`CC=gcc CXX=g++`: BLFS used to prefer to use gcc and g++ instead of upstream’s defaults of the clang programs. With the release of gcc-12 the build takes longer with gcc and g++, primarily because of extra warnings, and is bigger. Pass these environment variables to the configure script if you wish to continue to use gcc, g++ (by exporting them and unset them after the installation, or simply prepending them before the sh ../js/src/configure.in command). If you are building on a 32-bit system, also see below.

`CXXFLAGS="-msse2 -mfpmath=sse"`: Use SSE2 instead of 387 for double-precision floating-point operations. It’s needed by GCC to satisfy the expectations of upstream (Mozilla) developers with floating-point arithmetic. Use it if you are building this package on a 32-bit system with GCC (if Clang is not installed or GCC is explicitly specified). Note that this will cause JS to crash on a processor without SSE2 capability. If you are running the system on such an old processor, Clang is strictly needed. This setting is not needed on 64-bit systems because all 64-bit x86 processors support SSE2 and the 64-bit compilers (both Clang and GCC) use SSE2 by default.

Contents

Installed Programs: js102 and js102-config

Installed Libraries: libmozjs-102.so

Installed Directories: /usr/include/mozjs-102

Short Descriptions

js102 provides a command line interface to the JavaScript engine

js102-config is used to find the JS compiler and linker flags

libmozjs-102.so contains the Mozilla JavaScript API functions

9.24 JSON-C-0.16


Introduction to JSON-C

The JSON-C implements a reference counting object model that allows you to easily construct JSON objects in C, output them as JSON formatted strings and parse JSON formatted strings back into the C representation of JSON objects.

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

Package Information

JSON-C Dependencies

Required

CMake-3.25.2

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/json-c

Installation of JSON-C

Install JSON-C by running the following commands:

mkdir build &&
cd    build &&

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

To test the results, issue: make test.

Now, as the root user:

make install

Command Explanations

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

Contents

Installed Programs: None

Installed Libraries: libjson-c.so

Installed Directories: /usr/include/json-c

Short Descriptions

libjson-c.so contains the JSON-C API functions.

9.25 JSON-GLib-1.6.6


Introduction to JSON GLib

The JSON GLib package is a library providing serialization and deserialization support for the JavaScript Object Notation (JSON) format described by RFC 4627.

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

Package Information

JSON-GLib Dependencies

Required

GLib-2.74.5

Optional (Required if building GNOME)

gobject-introspection-1.74.0

Optional

GTK-Doc-1.33.2

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/json-glib

Installation of JSON GLib

Install JSON GLib 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: json-glib-format and json-glib-validate

Installed Library: libjson-glib-1.0.so

Installed Directories: /usr/{include,share/installed-tests}/json-glib-1.0, /usr/libexec/installed-tests/json-glib-1.6.6, and /usr/share/gtk-doc/html/json-glib

Short Descriptions

json-glib-format is a simple command line interface to format JSON data

json-glib-validate is a simple command line interface to validate JSON data

libjson-glib-1.0.so contains the JSON GLib API functions.

9.26 keyutils-1.6.1


Introduction to keyutils

Keyutils is a set of utilities for managing the key retention facility in the kernel, which can be used by filesystems, block devices and more to gain and retain the authorization and encryption keys required to perform secure operations.

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

Package Information

keyutils Dependencies

Required

MIT Kerberos V5-1.20.1

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

Installation of keyutils

Install keyutils by running the following commands:

sed -i 's:$(LIBDIR)/$(PKGCONFIG_DIR):/usr/lib/pkgconfig:' Makefile &&
make

To test the results, issue, as the root user:

make -k test

Note that several tests will fail if certain uncommon kernel options were not used when the kernel was built. These include CONFIG_BIG_KEYS, CONFIG_KEY_DH_OPERATIONS, and CONFIG_CRYPTO_DH.

Now, as the root user:

make NO_ARLIB=1 LIBDIR=/usr/lib BINDIR=/usr/bin SBINDIR=/usr/sbin install

Command Explanations

sed … Makefile: This command ensures the pkgconfig file is placed in the correct directory.

NO_ARLIB=1: This make flag disables installing the static library.

Configuring keyutils

Config Files

/etc/request-key.conf and /etc/request-key.d/*

Contents

Installed Programs: keyctl, key.dns_resolver, and request-key

Installed Library: libkeyutils.so

Installed Directory: /etc/request-key.d and /usr/share/keyutils

Short Descriptions

keyctl controls the key management facility with a variety of subcommands

key.dns_resolver is invoked by request-key on behalf of the kernel when kernel services (such as NFS, CIFS and AFS) need to perform a hostname lookup and the kernel does not have the key cached. It is not ordinarily intended to be called directly

request-key is invoked by the kernel when the kernel is asked for a key that it doesn’t have immediately available. The kernel creates a temporary key and then calls out to this program to instantiate it. It is not intended to be called directly

libkeyutils.so contains the keyutils library API instantiation.

9.27 libaio-0.3.113


Introduction to libaio

The libaio package is an asynchronous I/O facility (“async I/O”, or “aio”) that has a richer API and capability set than the simple POSIX async I/O facility. This library, libaio, provides the Linux-native API for async I/O. The POSIX async I/O facility requires this library in order to provide kernel-accelerated async I/O capabilities, as do applications which require the Linux-native async I/O API.

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/libaio

Installation of libaio

First, disable the installation of the static library:

sed -i '/install.*libaio.a/s/^/#/' src/Makefile

Build libaio by running the following command:

make

If you want to run the test suite, fix an issue with Glibc-2.34 or later:

sed 's/-Werror//' -i harness/Makefile

To test the results, issue: make partcheck.

Now, install the package as the root user:

make install

Contents

Installed Programs: None

Installed Library: libaio.so

Installed Directories: None

Short Descriptions

libaio.so is the libaio library.

9.28 libarchive-3.6.2


Introduction to libarchive

The libarchive library provides a single interface for reading/writing various compression formats.

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

Package Information

libarchive Dependencies

Optional

libxml2-2.10.3, LZO-2.10, and Nettle-3.8.1

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

Installation of libarchive

Install libarchive by running the following commands:

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

To test the results, issue: LC_ALL=C make check.

Now, as the root user:

make install

Remove an invalid entry in /usr/lib/pkgconfig/libarchive.pc:

sed -i "s/iconv //" /usr/lib/pkgconfig/libarchive.pc

Command Explanations

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

--without-xml2: This switch sets expat for xar archive format support instead of preferred libxml2 if both packages are installed.

--without-nettle: This switch sets OpenSSL for crypto support instead of preferred Nettle if both packages are installed.

Contents

Installed Programs: bsdcat, bsdcpio, and bsdtar

Installed Libraries: libarchive.so

Installed Directories: None

Short Descriptions

bsdcat expands files to standard output

bsdcpio is a tool similar to cpio

bsdtar is a tool similar to GNU tar

libarchive.so is a library that can create and read several streaming archive formats.

9.29 libassuan-2.5.5


Introduction to libassuan

The libassuan package contains an inter process communication library used by some of the other GnuPG related packages. libassuan’s primary use is to allow a client to interact with a non-persistent server. libassuan is not, however, limited to use with GnuPG servers and clients. It was designed to be flexible enough to meet the demands of many transaction based environments with non-persistent servers.

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

Package Information

libassuan Dependencies

Required

libgpg-error-1.46

Optional

texlive-20220321 (or install-tl-unx)

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

Installation of libassuan

Install libassuan by running the following commands:

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

make -C doc html                                                       &&
makeinfo --html --no-split -o doc/assuan_nochunks.html doc/assuan.texi &&
makeinfo --plaintext       -o doc/assuan.txt           doc/assuan.texi

The above commands build the documentation in html and plaintext formats. If you wish to build alternate formats of the documentation, you must have texlive-20220321 installed and issue the following commands:

make -C doc pdf ps

To test the results, issue: make check.

Now, as the root user:

make install &&

install -v -dm755   /usr/share/doc/libassuan-2.5.5/html &&
install -v -m644 doc/assuan.html/* \
                    /usr/share/doc/libassuan-2.5.5/html &&
install -v -m644 doc/assuan_nochunks.html \
                    /usr/share/doc/libassuan-2.5.5      &&
install -v -m644 doc/assuan.{txt,texi} \
                    /usr/share/doc/libassuan-2.5.5

If you built alternate formats of the documentation, install them by running the following commands as the root user:

install -v -m644  doc/assuan.{pdf,ps,dvi} \
                  /usr/share/doc/libassuan-2.5.5

Contents

Installed Program: libassuan-config

Installed Library: libassuan.so

Installed Directory: /usr/share/doc/libassuan-2.5.5

Short Descriptions

libassuan-config is a libassuan build information script

libassuan.so is an inter process communication library which implements the Assuan protocol.

9.30 libatasmart-0.19


Introduction to libatasmart

The libatasmart package is a disk reporting library. It only supports a subset of the ATA S.M.A.R.T. functionality.

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/libatasmart

Installation of libatasmart

Install libatasmart 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 docdir=/usr/share/doc/libatasmart-0.19 install

Command Explanations

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

Contents

Installed Programs: skdump and sktest

Installed Library: libatasmart.so

Installed Directory: /usr/share/doc/libatasmart-0.19

Short Descriptions

skdump is a utility that reports on the status of the disk

sktest is a utility to issue disks tests

libatasmart.so contains the ATA S.M.A.R.T API functions.

9.31 libatomic_ops-7.6.14


Introduction to libatomic_ops

libatomic_ops provides implementations for atomic memory update operations on a number of architectures. This allows direct use of these in reasonably portable code. Unlike earlier similar packages, this one explicitly considers memory barrier semantics, and allows the construction of code that involves minimum overhead across a variety of architectures.

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/libatomic_ops

Installation of libatomic_ops

Install libatomic_ops by running the following commands:

./configure --prefix=/usr    \
            --enable-shared  \
            --disable-static \
            --docdir=/usr/share/doc/libatomic_ops-7.6.14 &&
make

To check the results, issue make check.

Now, as the root user:

make install

Command Explanations

--enable-shared: This switch enables building of the libatomic_ops shared libraries.

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

Contents

Installed Programs: None

Installed Libraries: libatomic_ops.so and libatomic_ops_gpl.so

Installed Directory: /usr/include/libatomic_ops and /usr/share/doc/libatomic_ops-7.6.14

Short Descriptions

libatomic_ops.so contains functions for atomic memory operations.

9.32 libblockdev-2.28


Introduction to libblockdev

libblockdev is a C library supporting GObject Introspection for manipulation of block devices. It has a plugin-based architecture where each technology (like LVM, Btrfs, MD RAID, Swap,…) is implemented in a separate plugin, possibly with multiple implementations (e.g. using LVM CLI or the new LVM DBus API).

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

Package Information

libblockdev Dependencies

Required

gobject-introspection-1.74.0, libbytesize-2.7, libyaml-0.2.5, parted-3.5, and volume_key-0.3.12

Optional

btrfs-progs-6.1.3, GTK-Doc-1.33.2, mdadm-4.2, dmraid, bcachefs, and ndctl

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

Installation of libblockdev

Install libblockdev by running the following commands:

./configure --prefix=/usr     \
            --sysconfdir=/etc \
            --with-python3    \
            --without-gtk-doc \
            --without-nvdimm  \
            --without-dm      &&
make

This package does not come with a working test suite.

Now, as the root user:

make install

Contents

Installed Programs: lvm-cache-stats

Installed Libraries: libbd_btrfs.so, libbd_crypto.so, libbd_fs.so, libbd_kbd.so, libbd_loop.so, libbd_lvm.so, libbd_lvm-dbus.so, libbd_mdraid.so, libbd_mpath.so, libbd_part.so, libbd_part_err.so, libbd_swap.so, libbd_utils.so, libbd_vdo.so, and libblockdev.so

Installed Directories: /etc/libblockdev, /usr/include/blockdev, and /usr/share/gtk-doc/html/libblockdev

Short Descriptions

lvm-cache-stats prints statistics on caches on LVM Logical Volumes.

9.33 libbytesize-2.7


Introduction to libbytesize

The libbytesize package is a library which facilitates the common operations with sizes in bytes.

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

Package Information

libbytesize Dependencies

Required

pcre2-10.42 and Pygments-2.14.0

six-1.16.0

Optional

GTK-Doc-1.33.2, pocketlint (python module for one test), and polib (python module for one test)

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

Installation of libbytesize

Install libbytesize by running the following commands:

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

If you have the optional python modules installed, the regression tests can be run with: make check.

Now, as the root user:

make install

Contents

Installed Programs: bscalc

Installed Library: libbytesize.so

Installed Directories: /usr/include/bytesize and /usr/lib/python3.11/site-packages/bytesize

Short Descriptions

bscalc converts from a larger unit, such as MB or TB, back to a value in bytes

libbytesize.so contains functions used to handle common read/write operations with sizes in bytes.

9.34 libcloudproviders-0.3.1


Introduction to libcloudproviders

The libcloudproviders package contains a library which provides a DBus API that allows cloud storage sync clients to expose their services.

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

Package Information

libcloudproviders Dependencies

Required

gobject-introspection-1.74.0 and Vala-0.56.4

Optional

GTK-Doc-1.33.2

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

Installation of libcloudproviders

Install libcloudproviders 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.

-Denable-gtk-doc: Use this switch if you have GTK-Doc-1.33.2 installed and wish to generate the API documentation.

Contents

Installed Programs: None

Installed Libraries: libcloudproviders.so

Installed Directories: /usr/include/cloudproviders

Short Descriptions

libcloudproviders.so contains functions that provide a DBus API to allow cloud storage sync clients to expose their services.

9.35 libdaemon-0.14


Introduction to libdaemon

The libdaemon package is a lightweight C library that eases the writing of UNIX daemons.

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

Package Information

libdaemon Dependencies

Optional

Doxygen-1.9.6 and Lynx-2.8.9rel.1

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

Installation of libdaemon

Install libdaemon by running the following commands:

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

If you have Doxygen installed and wish to build the API documentation, issue the following command:

make -C doc doxygen

This package does not come with a test suite.

Now, as the root user:

make docdir=/usr/share/doc/libdaemon-0.14 install

If you built the API documentation, install it using the following commands as the root user:

install -v -m755 -d /usr/share/doc/libdaemon-0.14/reference/html &&
install -v -m644 doc/reference/html/* /usr/share/doc/libdaemon-0.14/reference/html &&
install -v -m644 doc/reference/man/man3/* /usr/share/man/man3

Command Explanations

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

Contents

Installed Programs: None

Installed Library: libdaemon.so

Installed Directories: /usr/include/libdaemon and /usr/share/doc/libdaemon-0.14

Short Descriptions

libdaemon.so contains the libdaemon API functions.

9.36 libgcrypt-1.10.1


Introduction to libgcrypt

The libgcrypt package contains a general purpose crypto library based on the code used in GnuPG. The library provides a high level interface to cryptographic building blocks using an extendable and flexible API.

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

Package Information

libgcrypt Dependencies

Required

libgpg-error-1.46

Optional

Pth-2.0.7 and texlive-20220321 (or install-tl-unx)

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

Installation of libgcrypt

Install libgcrypt by running the following commands:

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

make -C doc html                                                       &&
makeinfo --html --no-split -o doc/gcrypt_nochunks.html doc/gcrypt.texi &&
makeinfo --plaintext       -o doc/gcrypt.txt           doc/gcrypt.texi

The above commands build the documentation in html and plaintext formats. If you wish to build alternate formats of the documentation, you need texlive-20220321 (or install-tl-unx). Issue the following command:

make -C doc pdf

To test the results, issue: make check.

Now, as the root user:

make install &&
install -v -dm755   /usr/share/doc/libgcrypt-1.10.1 &&
install -v -m644    README doc/{README.apichanges,fips*,libgcrypt*} \
                    /usr/share/doc/libgcrypt-1.10.1 &&

install -v -dm755   /usr/share/doc/libgcrypt-1.10.1/html &&
install -v -m644 doc/gcrypt.html/* \
                    /usr/share/doc/libgcrypt-1.10.1/html &&
install -v -m644 doc/gcrypt_nochunks.html \
                    /usr/share/doc/libgcrypt-1.10.1      &&
install -v -m644 doc/gcrypt.{txt,texi} \
                    /usr/share/doc/libgcrypt-1.10.1

If you built alternate formats of the documentation, install them by issuing the following command as the root user:

install -v -m644 doc/gcrypt.{pdf,ps,dvi} \
                    /usr/share/doc/libgcrypt-1.10.1

Command Explanations

--with-capabilities: This option enables libcap2 support. Note that this breaks cryptsetup-2.4.3

Contents

Installed Programs: dumpsexp, hmac256, libgcrypt-config, and mpicalc

Installed Library: libgcrypt.so

Installed Directory: /usr/share/doc/libgcrypt-1.10.1

Short Descriptions

dumpsexp is a debug tool for S-expressions

hmac256 is a standalone HMAC-SHA-256 implementation used to compute an HMAC-SHA-256 authentication code

libgcrypt-config determines the compile and linker flags that should be used to compile and link programs that use libgcrypt

mpicalc is a RPN (Reverse Polish Notation) calculator

libgcrypt.so contains the cryptographic API functions.

9.37 libgpg-error-1.46


Introduction to libgpg-error

The libgpg-error package contains a library that defines common error values for all GnuPG components.

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/libgpg-error

Installation of libgpg-error

Install libgpg-error by running the following commands:

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

To test the results, issue: make check.

Now, as the root user:

make install &&
install -v -m644 -D README /usr/share/doc/libgpg-error-1.46/README

Contents

Installed Programs: gpg-error, gpgrt-config, and yat2m

Installed Library: libgpg-error.so

Installed Directories: /usr/share/common-lisp/source/gpg-error, /usr/share/libgpg-error, and /usr/share/doc/libgpg-error-1.46

Short Descriptions

gpg-error is used to determine libgpg-error error codes

gpgrt-config is a pkg-config style tool for querying the information about installed version of libgpg-error

yat2m extracts man pages from a Texinfo source

libgpg-error.so contains the libgpg-error API functions.

9.38 libgrss-0.7.0


Introduction to libgrss

The libgrss package contains a library designed to manipulate RSS and Atom feeds.

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

Package Information

Additional Downloads

libgrss Dependencies

Required

libsoup-2.74.3

GTK-Doc-1.33.2

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

Installation of libgrss

Install libgrss by running the following commands:

patch -Np1 -i ../libgrss-0.7.0-bugfixes-2.patch &&
autoreconf -fv &&
./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.

--enable-gtk-doc: Use this parameter if GTK-Doc is installed and you wish to rebuild and install the API documentation.

Contents

Installed Programs: None

Installed Library: libgrss.so

Installed Directories: /usr/include/libgrss and /usr/share/doc/libgrss-0.7.0

Short Descriptions

libgrss.so provides API functions for handling RSS feeds.

9.39 libgsf-1.14.50


Introduction to libgsf

The libgsf package contains a library used for providing an extensible input/output abstraction layer for structured file formats.

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

Package Information

libgsf Dependencies

Required

GLib-2.74.5 and libxml2-2.10.3

gdk-pixbuf-2.42.10 (To build gsf-office-thumbnailer)

Optional

gobject-introspection-1.74.0 and GTK-Doc-1.33.2

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

Installation of libgsf

Install libgsf by running the following commands:

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

To test the results, issue: make check. Two tests, t1004-zip-zip64.pl and t1005-zip-nonseekable.pl are known to fail.

Now, as the root user:

make install

Command Explanations

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

--enable-gtk-doc: Use this parameter if GTK-Doc is installed and you wish to rebuild and install the API documentation.

Contents

Installed Programs: gsf, gsf-office-thumbnailer, and gsf-vba-dump

Installed Library: libgsf-1.so

Installed Directories: /usr/include/libgsf-1, /usr/share/gtk-doc/html/gsf and /usr/share/thumbnailers

Short Descriptions

gsf is a simple archive utility, somewhat similar to tar(1)

gsf-office-thumbnailer is used internally by GNOME applications such as Nautilus to generate thumbnails of several types of office application files

gsf-vba-dump is used to extract Visual Basic for Applications macros from files

libgsf-1.so contains the libgsf API functions.

9.40 libgudev-237


Introduction to libgudev

The libgudev package contains GObject bindings for libudev.

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

Package Information

Required

GLib-2.74.5

Optional

gobject-introspection-1.74.0 (for gir-data, needed for GNOME), GTK-Doc-1.33.2, and umockdev-0.17.16 (for testing)

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

Installation of libgudev

Install libgudev 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.

-Dgtk_doc=true: Use this option if GTK-Doc is installed and you wish to build and install the API documentation.

Contents

Installed Program: None

Installed Libraries: libgudev-1.0.so

Installed Directories: /usr/include/gudev-1.0 and /usr/share/gtk-doc/html/gudev

Short Descriptions

libgudev-1.0.so is a GObject-based wrapper library for libudev.

9.41 libgusb-0.4.5


Introduction to libgusb

The libgusb package contains the GObject wrappers for libusb-1.0 that makes it easy to do asynchronous control, bulk and interrupt transfers with proper cancellation and integration into a mainloop.

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

Package Information

libgusb Dependencies

Required

JSON-GLib-1.6.6 and libusb-1.0.26

gobject-introspection-1.74.0, umockdev-0.17.16, usbutils-015 (for usb.ids data file, which is also required for the tests), and Vala-0.56.4

Optional

Gi-DocGen-2023.1

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

Installation of libgusb

Install libgusb by running the following commands:

mkdir build &&
cd    build &&

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

If you have Gi-DocGen-2023.1 installed and wish to build the API documentation for this package, issue:

sed "/output: 'libgusb'/s/'\$/-0.4.5'/" -i ../docs/meson.build &&
meson configure -Ddocs=true                                    &&
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.

-Ddocs=false: Allow building this package without Gi-DocGen-2023.1 installed. If you have Gi-DocGen-2023.1 installed and you wish to rebuild and install the API documentation, a meson configure command will reset this option.

Contents

Installed Programs: gusbcmd

Installed Library: libgusb.so

Installed Directories: /usr/include/gusb-1 and /usr/share/doc/libgusb-0.4.5 (if gi-docgen is used)

Short Descriptions

gusbcmd is a debugging tool for the libgusb library

libgusb.so contains the libgusb API functions.

9.42 libical-3.0.16


Introduction to libical

The libical package contains an implementation of the iCalendar protocols and data formats.

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

Package Information

libical Dependencies

Required

CMake-3.25.2

gobject-introspection-1.74.0 and Vala-0.56.4 (both required for GNOME)

Optional

Berkeley DB-5.3.28, Doxygen-1.9.6 (for the API documentation), Graphviz-7.1.0 (for the API documentation), GTK-Doc-1.33.2 (for the API documentation), ICU-72.1, and PyGObject-3.42.2 (for some tests)

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

Installation of libical

Install libical by running the following commands:

Note

This package may occasionally fail when building with multiple processors. See Using Multiple Processors for more information.

mkdir build &&
cd    build &&

cmake -DCMAKE_INSTALL_PREFIX=/usr  \
      -DCMAKE_BUILD_TYPE=Release   \
      -DSHARED_ONLY=yes            \
      -DICAL_BUILD_DOCS=false      \
      -DGOBJECT_INTROSPECTION=true \
      -DICAL_GLIB_VAPI=true        \
      .. &&
make -j1

If you have Doxygen-1.9.6, Graphviz-7.1.0, and GTK-Doc-1.33.2 installed and wish to build the API documentation, you should remove the -DICAL_BUILD_DOCS=false switch and issue:

make docs

To test the results, issue: make test.

Now, as the root user:

make install

If you have built the API documentation, install by issuing, as root user:

install -vdm755 /usr/share/doc/libical-3.0.16/html &&
cp -vr apidocs/html/* /usr/share/doc/libical-3.0.16/html

Command Explanations

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

-DSHARED_ONLY=yes: This switch is used in order to only build the shared libraries.

-DICAL_BUILD_DOCS=false: This switch prevents building the GTK documentation. Remove if you want to build the documentation.

-DGOBJECT_INTROSPECTION=true: This switch is used to generate GObject metadata bindings.

-DICAL_GLIB_VAPI=true: This switch is used in order to build bindings for Vala-0.56.4.

-DUSE_BUILTIN_TZDATA=yes: This switch is used in order to build using your own timezone data.

Contents

Installed Programs: None

Installed Libraries: libical_cxx.so, libical.so, libical-glib.so, libicalss_cxx.so, libicalss.so, and libicalvcal.so

Installed Directory: /usr/include/libical, /usr/include/libical-glib, /usr/lib/cmake/LibIcal, /usr/libexec/libical, /usr/share/gtk-doc/html/libical-glib (optional), and /usr/share/doc/libical-3.0.16/html

Short Descriptions

libical.so contains the libical API functions

libical_cxx.so contains the libical C++ bindings

libical-glib.so contains the libical glib bindings

libicalss.so is a library that allows you to store iCal component data to disk in a variety of ways

libicalss_cxx.so contains the libicalss C++ bindings

libicalvcal.so is a vCard/vCalendar C interface.

9.43 libidn-1.41


Introduction to libidn

libidn is a package designed for internationalized string handling based on the Stringprep, Punycode and IDNA specifications defined by the Internet Engineering Task Force (IETF) Internationalized Domain Names (IDN) working group, used for internationalized domain names. This is useful for converting data from the system’s native representation into UTF-8, transforming Unicode strings into ASCII strings, allowing applications to use certain ASCII name labels (beginning with a special prefix) to represent non-ASCII name labels, and converting entire domain names to and from the ASCII Compatible Encoding (ACE) form.

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

Package Information

libidn Dependencies

Optional

Pth-2.0.7, Emacs-28.2, GTK-Doc-1.33.2, OpenJDK-19.0.2, Valgrind-3.20.0, and Mono

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

Installation of libidn

Install libidn by running the following commands:

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

To test the results, run:

pushd tests  &&
  make check &&
popd

Now, as the root user:

make install &&

find doc -name "Makefile*" -delete            &&
rm -rf -v doc/{gdoc,idn.1,stamp-vti,man,texi} &&
mkdir -v       /usr/share/doc/libidn-1.41     &&
cp -r -v doc/* /usr/share/doc/libidn-1.41

Command Explanations

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

--enable-gtk-doc: Use this parameter if GTK-Doc is installed and you wish to rebuild and install the API documentation.

--enable-java: Use this switch to enable building the Java implementation of libidn. Note that OpenJDK-19.0.2 must be installed to use this option.

Contents

Installed Program: idn

Installed Library: libidn.so

Installed Directories: /usr/share/doc/libidn-1.41 and /usr/share/gtk-doc/html/libidn

Short Descriptions

idn is a command line interface to the internationalized domain name library

libidn.so contains a generic Stringprep implementation that does Unicode 3.2 NFKC normalization, mapping and prohibition of characters, and bidirectional character handling. Profiles for Nameprep, iSCSI, SASL and XMPP are included as well as support for Punycode and ASCII Compatible Encoding (ACE) via IDNA. A mechanism to define Top-Level Domain (TLD) specific validation tables, and to compare strings against those tables, as well as default tables for some TLDs are included.

9.44 libidn2-2.3.4


Introduction to libidn2

libidn2 is a package designed for internationalized string handling based on standards from the Internet Engineering Task Force (IETF)’s IDN working group, designed for internationalized domain names.

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

Package Information

libidn2 Dependencies

Required

libunistring-1.1

Optional

git-2.39.2 and GTK-Doc-1.33.2

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

Installation of libidn2

Install libidn2 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.

--enable-gtk-doc: Use this parameter if GTK-Doc is installed and you wish to rebuild and install the API documentation.

Contents

Installed Program: idn2

Installed Library: libidn2.so

Installed Directory: /usr/share/gtk-doc/html/libidn2

Short Descriptions

idn2 is a command line interface to the internationalized domain library

libidn2.so contains a generic Stringprep implementation used for internationalized string handling.

9.45 libiodbc-3.52.15


Introduction to libiodbc

libiodbc is an API to ODBC compatible databases.

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

Package Information

libiodbc Dependencies

GTK+-2.24.33 (to create the GUI admin tool)

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

Installation of libiodbc

Install libiodbc by running the following commands:

./configure --prefix=/usr                   \
            --with-iodbc-inidir=/etc/iodbc  \
            --includedir=/usr/include/iodbc \
            --disable-libodbc               \
            --disable-static                &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--with-iodbc-inidir=/etc/iodbc: libiodbc will install configuration files in this directory.

--includedir=/usr/include/iodbc: This installs the interface headers to a private directory to avoid a conflict with headers installed by unixODBC.

--disable-libodbc: This prevents the installation of the libodbc.so symbolic link to avoid a conflict with unixODBC.

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

Contents

Installed Programs: iodbc-config, iodbctest, iodbctestw, and iodbcadm-gtk

Installed Libraries: libdrvproxy.so, libiodbc.so, libiodbcinst.so, and libiodbcadm.so

Installed Directory: /usr/include/iodbc, /usr/share/libiodbc, and /etc/iodbc

Short Descriptions

iodbc-config is a utility for retrieving the installation options of libiodbc

iodbctest{,w} are interactive SQL processors

iodbcadm-gtk is a graphical administration utility.

9.46 libksba-1.6.3


Introduction to Libksba

The Libksba package contains a library used to make X.509 certificates as well as making the CMS (Cryptographic Message Syntax) easily accessible by other applications. Both specifications are building blocks of S/MIME and TLS. The library does not rely on another cryptographic library but provides hooks for easy integration with Libgcrypt.

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

Package Information

Libksba Dependencies

Required

libgpg-error-1.46

Optional

Valgrind-3.20.0

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

Installation of Libksba

Install Libksba 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 Program: None

Installed Library: libksba.so

Installed Directory: None

Short Descriptions

libksba.{so,a} contains the cryptographic API functions.

9.47 liblinear-245


Introduction to liblinear

This package provides a library for learning linear classifiers for large scale applications. It supports Support Vector Machines (SVM) with L2 and L1 loss, logistic regression, multi class classification and also Linear Programming Machines (L1-regularized SVMs). Its computational complexity scales linearly with the number of training examples making it one of the fastest SVM solvers around.

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

Note

After updating this package from liblinear-1.96 or earlier, you need to reinstall Nmap-7.93, in order to link to the new library.

Package Information

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

Installation of liblinear

Install liblinear by running the following commands:

make lib

This package does not come with a test suite.

Now, as the root user:

install -vm644 linear.h /usr/include &&
install -vm755 liblinear.so.5 /usr/lib &&
ln -sfv liblinear.so.5 /usr/lib/liblinear.so

Contents

Installed Programs: None

Installed Library: liblinear.so

Installed Directories: None

Short Descriptions

liblinear.so is a large linear classification library.

9.48 libmbim-1.26.4


Introduction to libmbim

The libmbim package contains a GLib-based library for talking to WWAN modems and devices which speak the Mobile Interface Broadband Model (MBIM) protocol.

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

Package Information

libmbim Dependencies

gobject-introspection-1.74.0

Optional

GTK-Doc-1.33.2 and help2man

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

Installation of libmbim

Install libmbim 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.

--enable-gtk-doc: Use this parameter if GTK-Doc is installed and you wish to rebuild and install the API documentation.

Contents

Installed Programs: mbimcli and mbim-network

Installed Libraries: libmbim-glib.so

Installed Directories: /usr/include/libmbim-glib and /usr/share/gtk-doc/html/libmbim-glib

Short Descriptions

mbimcli is an utility used to control MBIM devices

mbim-network is an utility used for simple network management of MBIM devices

libmbim-glib.so contains API functions for talking to WWAN modems and devices which speak the Mobile Interface Broadband Model (MBIM) protocol.

9.49 libpaper-1.1.24+nmu5


Introduction to libpaper

This package is intended to provide a simple way for applications to take actions based on a system or user-specified paper size.

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/libpaper

Installation of libpaper

Install libpaper by running the following commands:

autoreconf -fi                &&
./configure --prefix=/usr     \
            --sysconfdir=/etc \
            --disable-static &&
make

This package does not come with a test suite.

Now, as the root user:

make install &&
mkdir -vp /etc/libpaper.d

The /etc/libpaper.d directory contains scripts to run after the paper size has been changed. This package puts no scripts here, but other packages may. If the fcron package has not been installed, create the run-parts script as shown in the Fcron Configuration Information section.

Command Explanations

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

mkdir -pv /etc/libpaper.d: libpaper expects that packages will install files into this directory.

Configuring libpaper

Configuration Information

Create /etc/papersize to set the default system paper size. Issue the following command as the root user to set this to ‘A4’ (libpaper prefers the lowercase form). You may wish to use a different size, such as letter.

cat > /etc/papersize << "EOF"
a4
EOF

Contents

Installed Programs: paperconf, paperconfig, run-parts

Installed Library: libpaper.so

Installed Directories: /etc/libpaper.d

Short Descriptions

paperconf prints paper configuration information

paperconfig configures the system default paper size

libpaper.so contains functions for interrogating the paper library.

9.50 libportal-0.6


Introduction to libportal

The libportal package provides a library that contains GIO-style async APIs for most Flatpak portals.

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

Package Information

libportal Dependencies

Required

gobject-introspection-1.74.0

GTK+-3.24.36, GTK-4.8.3, and Qt-5.15.8

Optional

Gi-DocGen-2023.1 and Vala-0.56.4

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

Installation of libportal

Warning

If a previous version of libportal is installed, move the headers out of the way so that later packages do not encounter conflicts (as the root user):

if [ -e /usr/include/libportal ]; then
    rm -rf /usr/include/libportal.old &&
    mv -vf /usr/include/libportal{,.old}
fi

Install libportal by running the following commands:

mkdir build &&
cd    build &&

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

If you have Gi-DocGen-2023.1 installed and wish to build the API documentation for this package, issue:

sed "/output/s/-1/-0.6/" -i ../doc/meson.build &&
meson configure -Ddocs=true                    &&
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.

-Ddocs=false: Allow building this package without Gi-DocGen-2023.1 installed. If you have Gi-DocGen-2023.1 installed and you wish to rebuild and install the API documentation, a meson configure command will reset this option.

-Dbackends=gtk3,gtk4,qt5: This switch allows you to set the available backends. You can use it to disable the dependency on gtk-3, gtk-4, or qt-5. Most applications that use libportal will use either gtk-4 or gtk-3. The default is to build all three backends.

Contents

Installed Programs: None

Installed Libraries: libportal.so, libportal-gtk3.so, libportal-gtk4.so, and libportal-qt5.so

Installed Directories: /usr/include/libportal and /usr/share/gtk-doc/html/libportal

Short Descriptions

libportal.so provides GIO-style async APIs for most Flatpak portals

libportal-gtk3.so provides GTK+-3 specific functions for interacting with Flatpak portals.

libportal-gtk4.so provides GTK-4 specific functions for interacting with Flatpak portals.

libportal-qt5.so provides Qt5 specific functions for interacting with Flatpak portals.

9.51 libptytty-2.0


Introduction to libptytty

The libptytty package provides a library that allows for OS independent and secure pty/tty and utmp/wtmp/lastlog handling.

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

Package Information

libptytty Dependencies

Required

CMake-3.25.2

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

Installation of libptytty

Install libptytty by running the following commands:

mkdir build &&
cd    build &&

cmake -DCMAKE_INSTALL_PREFIX=/usr     \
      -DCMAKE_BUILD_TYPE=Release      \
      -DPT_UTMP_FILE:STRING=/run/utmp \
      .. &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Contents

Installed Programs: None

Installed Libraries: libptytty.so

Installed Directories: None

Short Descriptions

libptytty.so provides for OS independent and secure pty/tty and utmp/wtmp/lastlog handling.

9.52 libqalculate-4.5.1


Introduction to libqalculate

The libqalculate package contains a library that provides functions for a multi-purpose calculator.

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

Package Information

libqalculate Dependencies

Required

cURL-7.88.1, ICU-72.1, and libxml2-2.10.3

Optional

Doxygen-1.9.6

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

Installation of libqalculate

Install libqalculate by running the following commands:

./configure --prefix=/usr    \
            --disable-static \
            --docdir=/usr/share/doc/libqalculate-4.5.1 &&
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: qalc

Installed Library: libqalculate.so

Installed Directories: /usr/include/libqalculate, /usr/share/doc/libqalculate-4.5.1, and /usr/share/qalculate

Short Descriptions

qalc is a powerful and easy to use command line calculator

libqalculate.so contains the libqalculate API functions.

9.53 libqmi-1.30.8


Introduction to libqmi

The libqmi package contains a GLib-based library for talking to WWAN modems and devices which speak the Qualcomm MSM Interface (QMI) protocol.

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

Package Information

libqmi Dependencies

Required

GLib-2.74.5 and libgudev-237

gobject-introspection-1.74.0 and libmbim-1.26.4

Optional

GTK-Doc-1.33.2, help2man, and libqrtr-glib

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

Installation of libqmi

Install libqmi by running the following commands:

PYTHON=python3 ./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.

--enable-gtk-doc: Use this parameter if GTK-Doc is installed and you wish to rebuild and install the API documentation.

--disable-mbim-qmux: This switch disables support for using a MBIM control device for QMI messages. Use this switch if you did not install libmbim.

Contents

Installed Programs: qmicli, qmi-firmware-update, and qmi-network

Installed Libraries: libqmi-glib.so

Installed Directories: /usr/include/libqmi-glib and /usr/share/gtk-doc/html/libqmi-glib

Short Descriptions

qmicli is an utility used to control QMI devices

qmi-firmware-update is an utility used to perform firmware updates on QMI devices

qmi-network is an utility used for simple network management of QMI devices

libqmi-glib.so contains API functions for talking to WWAN modems and devices which speak the Qualcomm MSM Interface (QMI) protocol.

9.54 libseccomp-2.5.4


Introduction to libseccomp

The libseccomp package provides an easy to use and platform independent interface to the Linux kernel’s syscall filtering mechanism.

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

Package Information

libseccomp Dependencies

Optional

Which-2.21 (needed for tests), Valgrind-3.20.0, and LCOV

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

Installation of libseccomp

Install libseccomp 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 Program: scmp_sys_resolver

Installed Library: libseccomp.so

Installed Directories: None

Short Descriptions

scmp_sys_resolver is used to resolve system calls for applications

libseccomp.so contains API functions for translating syscalls.

9.55 libsigc++-2.12.0


Introduction to libsigc++

The libsigc++ package implements a typesafe callback system for standard C++.

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

Package Information

libsigc++ Dependencies

Boost-1.81.0 and libxslt-1.1.37

Optional

DocBook-utils-0.6.14, docbook-xml-5.0, Doxygen-1.9.6, and mm-common

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/libsigc++

Installation of libsigc++

Install libsigc++ by running the following commands:

mkdir bld &&
cd    bld &&

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

To test the results, issue: ninja test.

Now, as the root user:

ninja install

Command Explanations

-Dbuild-documentation=true: Use this switch if Doxygen-1.9.6 is installed and you wish to build and install the API documentation.

Contents

Installed Programs: None

Installed Library: libsigc-2.0.so

Installed Directories: /usr/{include,lib}/sigc++-2.0 and /usr/share/{devhelp/books,doc}/libsigc++-2.0 (if the documentation is enabled)

Short Descriptions

libsigc-2.0.so contains the libsigc++ API functions.

9.56 libsigsegv-2.14


Introduction to libsigsegv

libsigsegv is a library for handling page faults in user mode. A page fault occurs when a program tries to access to a region of memory that is currently not available. Catching and handling a page fault is a useful technique for implementing pageable virtual memory, memory-mapped access to persistent databases, generational garbage collectors, stack overflow handlers, and distributed shared memory.

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/libsigsegv

Installation of libsigsegv

Install libsigsegv by running the following commands:

./configure --prefix=/usr   \
            --enable-shared \
            --disable-static &&
make

To test the results, issue: make check.

Now, as the root user:

make install

Command Explanations

--enable-shared: This switch ensures that shared libraries are compiled.

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

Contents

Installed Programs: None

Installed Library: libsigsegv.so

Installed Directories: None

Short Descriptions

libsigsegv.so is a library for handling page faults in user mode.

9.57 libssh2-1.10.0


Introduction to libssh2

Libssh2 package is a client-side C library implementing the SSH2 protocol.

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

Package Information

Additional Downloads

libssh2 Dependencies

Optional

GnuPG-2.4.0, libgcrypt-1.10.1, and OpenSSH-9.2p1 (all three are required for the test suite)

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

Installation of libssh2

Apply a patch to fix incompatibility with recent OpenSSH releases:

patch -Np1 -i ../libssh2-1.10.0-upstream_fix-1.patch

Install libssh2 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: libssh2.so

Installed Directories: None

Short Descriptions

libssh2.so contains functions to use the SSH2 protocol.

9.58 libstatgrab-0.92.1


Introduction to libstatgrab

This is a library that provides cross platform access to statistics about the system on which it’s run. It’s written in C and presents a selection of useful interfaces which can be used to access key system statistics. The current list of statistics includes CPU usage, memory utilisation, disk usage, process counts, network traffic, disk I/O, and more.

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/libstatgrab

Installation of libstatgrab

Install libstatgrab by running the following commands:

./configure --prefix=/usr   \
            --disable-static \
            --docdir=/usr/share/doc/libstatgrab-0.92.1 &&
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: saidar, statgrab, statgrab-make-mrtg-config, and statgrab-make-mrtg-index

Installed Library: libstatgrab.so

Installed Directories: /usr/share/doc/libstatgrab-0.92.1

Short Descriptions

saidar is a curses-based tool for viewing system statistics

statgrab is a sysctl-style interface to system statistics

statgrab-make-mrtg-config generates MRTG configuration

statgrab-make-mrtg-index generates an XHTML index page from MRTG configuration files or stdin

libstatgrab.so contains the libstatgrab API functions.

9.59 libtasn1-4.19.0


Introduction to libtasn1

libtasn1 is a highly portable C library that encodes and decodes DER/BER data following an ASN.1 schema.

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

Package Information

libtasn1 Dependencies

Optional

GTK-Doc-1.33.2 and Valgrind-3.20.0

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

Installation of libtasn1

Install libtasn1 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

If you did not pass the --enable-gtk-doc parameter to the configure script, you can install the API documentation using the following command as the root user:

make -C doc/reference install-data-local

Command Explanations

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

--enable-gtk-doc: This parameter is normally used if GTK-Doc is installed and you wish to rebuild and install the API documentation. It is broken for this package due to the use of a long deprecated gtk-doc program that is no longer available.

Contents

Installed Programs: asn1Coding, asn1Decoding and asn1Parser

Installed Library: libtasn1.so

Installed Directory: /usr/share/gtk-doc/html/libtasn1

Short Descriptions

asn1Coding is an ASN.1 DER encoder

asn1Decoding is an ASN.1 DER decoder

asn1Parser is an ASN.1 syntax tree generator for libtasn1

libtasn1.so is a library for Abstract Syntax Notation One (ASN.1) and Distinguish Encoding Rules (DER) manipulation.

9.60 libunique-1.1.6


Introduction to libunique

The libunique package contains a library for writing single instance applications.

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

Package Information

Additional Downloads

libunique Dependencies

Required

GTK+-2.24.33, also GTK-Doc-1.33.2 (for autoreconf)

Optional

gobject-introspection-1.74.0

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

Installation of libunique

Install libunique by running the following commands:

patch -Np1 -i ../libunique-1.1.6-upstream_fixes-1.patch &&
autoreconf -fi &&

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

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--disable-dbus: This switch disables D-Bus backend in favor of the GDBus backend.

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

--enable-gtk-doc: Use this parameter if GTK-Doc is installed and you wish to rebuild and install the API documentation.

Contents

Installed Programs: None

Installed Library: libunique-1.0.so

Installed Directories: /usr/include/unique-1.0 and /usr/share/gtk-doc/html/unique

Short Descriptions

libunique-1.0.so contains the libunique API functions for single instance support.

9.61 libunistring-1.1


Introduction to libunistring

libunistring is a library that provides functions for manipulating Unicode strings and for manipulating C strings according to the Unicode standard.

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

Package Information

libunistring Dependencies

Optional

texlive-20220321 (or install-tl-unx) (to rebuild the documentation)

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

Installation of libunistring

Install libunistring by running the following commands:

./configure --prefix=/usr    \
            --disable-static \
            --docdir=/usr/share/doc/libunistring-1.1 &&
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 Libraries: libunistring.so

Installed Directory: /usr/include/unistring and /usr/share/doc/libunistring-1.1

Short Descriptions

libunistring.so provides the unicode string library API.

9.62 libunwind-1.6.2


Introduction to libunwind

The libunwind package contains a portable and efficient C programming interface (API) to determine the call-chain of a program. The API additionally provides the means to manipulate the preserved (callee-saved) state of each call-frame and to resume execution at any point in the call-chain (non-local goto). The API supports both local (same-process) and remote (across-process) operation.

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

Package Information

libunwind Dependencies

Optional

texlive-20220321 (for latex2man)

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

Installation of libunwind

Install libunwind by running the following commands:

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

To test the results, issue: make check. Two tests, run-coredump-unwind and run-coredump-unwind-mdi are known to fail.

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 Libraries: libunwind.so, libunwind-coredump.so, libunwind-generic.so, libunwind-ptrace.so, libunwind-setjmp.so, and libunwind-x86_64.so

Installed Directories: None.

9.63 liburcu-0.14.0


Introduction to liburcu

The userspace-rcu package provides a set of userspace RCU (read-copy-update) libraries. These data synchronization libraries provide read-side access which scales linearly with the number of cores. It does so by allowing multiples copies of a given data structure to live at the same time, and by monitoring the data structure accesses to detect grace periods after which memory reclamation is possible.

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/liburcu

Installation of liburcu

Install liburcu by running the following commands:

./configure --prefix=/usr    \
            --disable-static \
            --docdir=/usr/share/doc/liburcu-0.14.0 &&
make

To test the results, issue: make check.

Now, as the root user:

make install

Contents

Installed Programs: None

Installed Libraries: liburcu.so, liburcu-bp.so, liburcu-cds.so, liburcu-common.so, liburcu-mb.so, liburcu-memb.so, liburcu-qsbr.so, and liburcu-signal.so

Installed Directories: /usr/include/urcu and /usr/share/doc/liburcu-0.14.0.

9.64 libusb-1.0.26


Introduction to libusb

The libusb package contains a library used by some applications for USB device access.

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

Package Information

libusb Dependencies

Optional

Doxygen-1.9.6

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

Installation of libusb

Install libusb by running the following commands:

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

If Doxygen is installed and you wish to build the API documentation, issue the following commands:

pushd doc                &&
  doxygen -u doxygen.cfg &&
  make docs              &&
popd

This package does not come with a test suite.

Now, as the root user:

make install

If you built the API documentation, install it using the following commands as the root user:

install -v -d -m755 /usr/share/doc/libusb-1.0.26/apidocs &&
install -v -m644    doc/api-1.0/* \
                    /usr/share/doc/libusb-1.0.26/apidocs

Configuring Libusb

To access raw USB devices (those not treated as a disk by the mass-storage driver), appropriate support must be available in the kernel. Check your kernel configuration:

Device Drivers --->
    [*] USB support --->                    [CONFIG_USB_SUPPORT]
        <*/M> Support for Host-side USB     [CONFIG_USB]
        (Select any USB hardware device drivers you may need on the same page)

For more details on setting up USB devices, see the section called “USB Device Issues”.

Contents

Installed Programs: None

Installed Library: libusb-1.0.so

Installed Directories: /usr/include/libusb-1.0 and /usr/share/doc/libusb-1.0.26

Short Descriptions

libusb-1.0.so contains API functions used for accessing USB hardware.

9.65 libuv-1.44.2


Introduction to libuv

The libuv package is a multi-platform support library with a focus on asynchronous I/O.

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/libuv

Installation of libuv

Install libuv by running the following commands:

Caution

The sh autogen.sh command below fails if the ACLOCAL environment variable is set as specified in Xorg-7. If it is used, ACLOCAL needs to be unset for this package and then reset for other packages.

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

If you want to run the tests, run: make check as a non-root user.

Now, as the root user:

make install

Contents

Installed Programs: None

Installed Library: libuv.so

Installed Directory: /usr/include/uv

Short Descriptions

libuv.so contains API functions for asynchronous I/O operations.

9.66 libxkbcommon-1.5.0


Introduction to libxkbcommon

libxkbcommon is a keymap compiler and support library which processes a reduced subset of keymaps as defined by the XKB specification.

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

Package Information

libxkbcommon Dependencies

Required

xkeyboard-config-2.38 (runtime)

libxcb-1.15, Wayland-1.21.0, and wayland-protocols-1.31

Optional

Doxygen-1.9.6

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

Installation of libxkbcommon

Install libxkbcommon by running the following commands:

mkdir build &&
cd    build &&

meson --prefix=/usr       \
      --buildtype=release \
      -Denable-docs=false .. &&
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.

-Denable-docs=false: This switch disables documentation generation. Remove it if Doxygen-1.9.6 is installed.

mv -v /usr/share/doc/libxkbcommon{,-1.5.0}: If you removed -Denable-docs=false, use this command to install the documentation in a versioned directory.

Contents

Installed Programs: xkbcli

Installed Libraries: libxkbcommon.so, libxkbcommon-x11.so, and libxkbregistry.so

Installed Directories: /usr/include/xkbcommon, /usr/libexec/xkbcommon, and /usr/share/doc/libxkbcommon-1.5.0

Short Descriptions

xkbcli provides a debugger and compiler for XKB keymaps

libxkbcommon.so contains the libxkbcommon API functions

libxkbcommon-x11.so contains the libxkbcommon X11 specific API functions

libxkbregistry.so contains a list of available XKB models, layouts, and variants for a given ruleset.

9.67 libxml2-2.10.3


Introduction to libxml2

The libxml2 package contains libraries and utilities used for parsing XML files.

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

Package Information

Additional Downloads

libxml2 Dependencies

Optional

ICU-72.1 (see below) and Valgrind-3.20.0 (may be used in the tests)

Note

The old Python2 module can be built after libxml2.so has been installed, see libxml2-2.10.3 python2 module.

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

Installation of libxml2

Install libxml2 by running the following commands:

./configure --prefix=/usr           \
            --sysconfdir=/etc       \
            --disable-static        \
            --with-history          \
            PYTHON=/usr/bin/python3 \
            --docdir=/usr/share/doc/libxml2-2.10.3 &&
make

If you downloaded the test suite, issue the following command:

tar xf ../xmlts20130923.tar.gz
To test the results, issue: make check > check.log. A summary of the results can be obtained with **grep -E ‘^Total expected’ check.log. If Valgrind-3.20.0 is installed and you want to check for memory leaks, replace **check with check-valgrind.

Note

The tests use http://localhost/ to test parsing of external entities. If the machine where you run the tests serves as a web site, the tests may hang, depending on the content of the file served. It is therefore recommended to shut down the server during the tests, as the root user:

systemctl stop httpd.service

Now, as the root user:

make install

Command Explanations

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

--with-history: This switch enables Readline support when running xmlcatalog or xmllint in shell mode.

PYTHON=/usr/bin/python3: Allows building the libxml2 module with Python3 instead of Python2.

--with-icu: Add this switch if you have built ICU-72.1, for better unicode support.

Contents

Installed Programs: xml2-config, xmlcatalog, and xmllint

Installed Libraries: libxml2.so

Installed Directories: /usr/include/libxml2, /usr/lib/cmake/libxml2, /usr/share/doc/libxml2-2.10.3, and /usr/share/gtk-doc/html/libxml2

Short Descriptions

xml2-config determines the compile and linker flags that should be used to compile and link programs that use libxml2

xmlcatalog is used to monitor and manipulate XML and SGML catalogs

xmllint parses XML files and outputs reports (based upon options) to detect errors in XML coding

libxml2.so provides functions for programs to parse files that use the XML format.

9.68 libxslt-1.1.37


Introduction to libxslt

The libxslt package contains XSLT libraries used for extending libxml2 libraries to support XSLT files.

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

Package Information

libxslt Dependencies

Required

libxml2-2.10.3

docbook-xml-4.5 and docbook-xsl-nons-1.79.2

Note

Although it is not a direct dependency, many applications using libxslt will expect docbook-xml-4.5 and docbook-xsl-nons-1.79.2 to be present.

Optional

libgcrypt-1.10.1

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

Installation of libxslt

Install libxslt by running the following commands:

./configure --prefix=/usr                          \
            --disable-static                       \
            --docdir=/usr/share/doc/libxslt-1.1.37 \
            PYTHON=/usr/bin/python3 &&
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: xslt-config and xsltproc

Installed Libraries: libexslt.so, libxslt.so and optionally, libxsltmod.so Python module

Installed Directories: /usr/include/libexslt, /usr/include/libxslt, /usr/lib/libxslt-plugins, /usr/share/doc/libxslt-1.1.37, and /usr/share/doc/libxslt-python-1.1.37

Short Descriptions

xslt-config is used to find out the pre-processor, linking and compiling flags necessary to use the libxslt libraries in 3rd-party programs

xsltproc is used to apply XSLT stylesheets to XML documents

libexslt.so is used to provide extensions to XSLT functions

libxslt.so provides extensions to the libxml2 libraries to parse files that use the XSLT format.

9.69 libwacom-2.6.0


Introduction to libwacom

The libwacom package contains a library used to identify wacom tablets and their model-specific features.

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

Package Information

libwacom Dependencies

Required

libgudev-237

libxml2-2.10.3

Optional

Doxygen-1.9.6, git-2.39.2, librsvg-2.54.5, Valgrind-3.20.0 (optional for some tests), and pytest-7.2.1 with python-libevdev and pyudev

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

Installation of libwacom

Install libwacom by running the following commands:

mkdir build &&
cd    build &&

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

To test the results, issue: ninja test. To run additional tests, install pytest-7.2.1, python-libevdev, and pyudev, then remove the “-Dtests=disabled” option from the meson line above.

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.

-Dtests=disabled: This parameter disables some of the more advanced tests because they require pytest-7.2.1 and other two Python modules beyond the scope of BLFS to work properly.

Contents

Installed Programs: libwacom-list-devices, libwacom-list-local-devices, libwacom-show-stylus, and libwacom-update-db

Installed Libraries: libwacom.so

Installed Directories: /usr/include/libwacom-1.0 and /usr/share/libwacom

Short Descriptions

libwacom-list-devices lists all tablet devices that are supported by libwacom

libwacom-list-local-devices lists tablet devices that are connected to the system

libwacom-show-stylus lists tablet stylus IDs

libwacom-update-db updates the system according to the current set of tablet data files

libwacom.so contains functions used for accessing Wacom information.

9.70 libwpe-1.14.1


Introduction to libwpe

The libwpe package contains a general purpose library for WPE WebKit and the WPE Renderer.

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

Package Information

libwpe Dependencies

Required

libxkbcommon-1.5.0 and Mesa-22.3.5

Optional

hotdoc

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

Installation of libwpe

Install libwpe 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: None

Installed Libraries: libwpe-1.0.so

Installed Directories: /usr/include/wpe-1.0

Short Descriptions

libwpe-1.0.so contains functions that provide a general purpose library for WPEWebKit and the WPE Renderer.

9.71 libyaml-0.2.5


Introduction to libyaml

The yaml package contains a C library for parsing and emitting YAML (YAML Ain’t Markup Language) code.

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

Package Information

libyaml Dependencies

Optional

Doxygen-1.9.6

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

Installation of libyaml

Install libyaml 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 Libraries: libyaml.so

Installed Directories: None

Short Descriptions

libyaml.so contains API functions for parsing and emitting YAML code.

9.72 LZO-2.10


Introduction to LZO

LZO is a data compression library which is suitable for data decompression and compression in real-time. This means it favors speed over compression ratio.

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/lzo

Installation of LZO

Install LZO by running the following commands:

./configure --prefix=/usr                    \
            --enable-shared                  \
            --disable-static                 \
            --docdir=/usr/share/doc/lzo-2.10 &&
make

To test the results, issue: make check. All the checks should pass. Now issue make test to run the full suite of tests.

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 Libraries: liblzo2.so

Installed Directories: /usr/include/lzo and /usr/share/doc/lzo

Short Descriptions

liblzo2.so is a data compression and decompression library.

9.73 mtdev-1.1.6


Introduction to mtdev

The mtdev package contains Multitouch Protocol Translation Library which is used to transform all variants of kernel MT (Multitouch) events to the slotted type B protocol.

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/mtdev

Installation of mtdev

Install mtdev 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

Command Explanations

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

Contents

Installed Program: mtdev-test

Installed Library: libmtdev.so

Installed Directories: None

Short Descriptions

mtdev-test is a tool to test libmtdev

libmtdev.so contains Multitouch Protocol Translation API functions.

9.74 Node.js-18.14.1


Introduction to Node.js

Node.js is a JavaScript runtime built on Chrome’s V8 JavaScript engine.

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

Package Information

Node.js Dependencies

Required

Which-2.21

c-ares-1.19.0, ICU-72.1, libuv-1.44.2, and nghttp2-1.52.0

Optional

http-parser and npm (an internal copy of npm will be installed if not present)

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

Installation of Node.js

Build Node.js by running the following commands:

./configure --prefix=/usr          \
            --shared-cares         \
            --shared-libuv         \
            --shared-openssl       \
            --shared-nghttp2       \
            --shared-zlib          \
            --with-intl=system-icu &&
make

To test the results, issue: make test-only. One test is known to fail.

Now, as the root user:

make install &&
ln -sf node /usr/share/doc/node-18.14.1

Command Explanations

--with-intl=system-icu: use the system version of icu. Other values are full-icu (to build a local, full icu library) and small-icu (to build a local, minimal icu library).

--shared-{cares,libuv,nghttp2,openssl,zlib}: use the system installed libraries instead of local copies.

--without-npm: do not build npm (use if you’d like to build a separate npm later).

--shared-http-parser: use the system installed library instead of a local copy.

Contents

Installed Programs: corepack, node, npm, and npx

Installed Library: None

Installed Directories: /usr/include/node, /usr/lib/node_modules/{corepack,npm}, /usr/share/doc/{node,node-18.14.1}, and /usr/share/systemtap/tapset

Short Descriptions

corepack is an experimental tool to help with managing versions of package managers.

node is the server-side JavaScript runtime

npm is the Node.js package manager

/usr/lib/node_modules/npm/ is the installation root for Node.js executables and libraries.

9.75 npth-1.6


Introduction to NPth

The NPth package contains a very portable POSIX/ANSI-C based library for Unix platforms which provides non-preemptive priority-based scheduling for multiple threads of execution (multithreading) inside event-driven applications. All threads run in the same address space of the server application, but each thread has its own individual program-counter, run-time stack, signal mask and errno variable.

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/npth

Installation of NPth

Install NPth 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 Program: npth-config

Installed Library: libnpth.so

Installed Directory: None

Short Descriptions

npth-config is a utility used to configure and build applications based on the npth library. It can be used to query the C compiler and linker flags which are required to correctly compile and link the application against the npth library

libnpth.so contains the API functions used by the New Portable Threads Library.

9.76 NSPR-4.35


Introduction to NSPR

Netscape Portable Runtime (NSPR) provides a platform-neutral API for system level and libc like functions.

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/nspr

Installation of NSPR

Install NSPR by running the following commands:

cd nspr                                                     &&
sed -ri '/^RELEASE/s/^/#/' pr/src/misc/Makefile.in &&
sed -i 's#$(LIBRARY) ##'   config/rules.mk         &&

./configure --prefix=/usr \
            --with-mozilla \
            --with-pthreads \
            $([ $(uname -m) = x86_64 ] && echo --enable-64bit) &&
make

The test suite is designed for testing changes to nss or nspr and is not particularly useful for checking a released version (e.g. it needs to be run on a non-optimized build with both nss and nspr directories existing alongside each other). For further details, see the User Notes for nss at https://wiki.linuxfromscratch.org/blfs/wiki/nss

Now, as the root user:

make install

Command Explanations

sed -ri ‘/^RELEASE/s/^/#/’ pr/src/misc/Makefile.in: This sed disables installing two unneeded scripts.

sed -i ‘s#$(LIBRARY) ##’ config/rules.mk: This sed disables installing the static libraries.

--with-mozilla: This parameter adds Mozilla support to the libraries (required if you want to build any other Mozilla products and link them to these libraries).

--with-pthreads: This parameter forces use of the system pthread library.

$([ $(uname -m) = x86_64 ] && echo --enable-64bit): The –enable-64bit parameter is required on an x86_64 system to prevent configure failing with a claim that this is a system without pthread support. The [ $(uname -m) = x86_64 ] test ensures it has no effect on a 32 bit system.

Contents

Installed Programs: nspr-config

Installed Libraries: libnspr4.so, libplc4.so, and libplds4.so

Installed Directories: /usr/include/nspr

Short Descriptions

nspr-config provides compiler and linker options to other packages that use NSPR

libnspr4.so contains functions that provide platform independence for non-GUI operating system facilities such as threads, thread synchronization, normal file and network I/O, interval timing and calendar time, basic memory management and shared library linking

libplc4.so contains functions that implement many of the features offered by libnspr4

libplds4.so contains functions that provide data structures.

9.77 PCRE-8.45


Introduction to PCRE

The PCRE package contains Perl Compatible Regular Expression libraries. These are useful for implementing regular expression pattern matching using the same syntax and semantics as Perl 5.

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

Package Information

PCRE Dependencies

Optional

Valgrind-3.20.0

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

Installation of PCRE

Install PCRE by running the following commands:

./configure --prefix=/usr                     \
            --docdir=/usr/share/doc/pcre-8.45 \
            --enable-unicode-properties       \
            --enable-pcre16                   \
            --enable-pcre32                   \
            --enable-pcregrep-libz            \
            --enable-pcregrep-libbz2          \
            --enable-pcretest-libreadline     \
            --disable-static                 &&
make

To test the results, issue: make check.

Now, as the root user:

make install

Command Explanations

--enable-unicode-properties: This switch enables Unicode properties support and includes the code for handling UTF-8/16/32 character strings in the library. You need this switch if you are going to build GLib-2.74.5.

--enable-pcre16: This switch enables 16 bit character support.

--enable-pcre32: This switch enables 32 bit character support.

--enable-pcregrep-libz: This switch adds support to pcregrep to read .gz compressed files.

--enable-pcregrep-libbz2: This switch adds support to pcregrep to read .bz2 compressed files.

--enable-pcretest-libreadline: This switch adds line editing and history features to pcretest program.

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

--enable-jit: this option enables Just-in-time compiling, which can greatly speed up pattern matching.

Contents

Installed Programs: pcregrep, pcretest, and pcre-config

Installed Libraries: libpcre.so, libpcre16.so, libpcre32.so, libpcrecpp.so and libpcreposix.so

Installed Directory: /usr/share/doc/pcre-8.45

Short Descriptions

pcregrep is a grep that understands Perl compatible regular expressions

pcretest can test a Perl compatible regular expression

pcre-config is used during the compile process of programs linking to the PCRE libraries.

9.78 PCRE2-10.42


Introduction to PCRE2

The PCRE2 package contains a new generation of the Perl Compatible Regular Expression libraries. These are useful for implementing regular expression pattern matching using the same syntax and semantics as Perl.

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

Package Information

PCRE2 Dependencies

Optional

Valgrind-3.20.0 and libedit

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

Installation of PCRE2

Install PCRE2 by running the following commands:

./configure --prefix=/usr                       \
            --docdir=/usr/share/doc/pcre2-10.42 \
            --enable-unicode                    \
            --enable-jit                        \
            --enable-pcre2-16                   \
            --enable-pcre2-32                   \
            --enable-pcre2grep-libz             \
            --enable-pcre2grep-libbz2           \
            --enable-pcre2test-libreadline      \
            --disable-static                    &&
make

To test the results, issue: make check.

Now, as the root user:

make install

Command Explanations

--enable-unicode: This switch enables Unicode support and includes the functions for handling UTF-8/16/32 character strings in the library.

--enable-pcre2-16: This switch enables 16 bit character support.

--enable-pcre2-32: This switch enables 32 bit character support.

--enable-pcre2grep-libz: This switch adds support for reading .gz compressed files to pcre2grep.

--enable-pcre2grep-libbz2: This switch adds support for reading .bz2 compressed files to pcre2grep.

--enable-pcre2test-libreadline: This switch adds line editing and history features to the pcre2test program.

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

--enable-jit: this option enables Just-in-time compiling, which can greatly speed up pattern matching.

Contents

Installed Programs: pcre2-config, pcre2grep, and pcre2test.

Installed Libraries: libpcre2-8.so, libpcre2-16.so, libpcre2-32.so, and libpcre2-posix.so

Installed Directory: /usr/share/doc/pcre2-10.42

Short Descriptions

pcre2grep is a version of grep that understands Perl compatible regular expressions.

pcre2test can test a Perl compatible regular expression.

pcre2-config outputs compilation information to programs linking against the PCRE2 libraries.

9.79 Popt-1.19


Introduction to Popt

The popt package contains the popt libraries which are used by some programs to parse command-line options.

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

Package Information

popt Dependencies

Optional

Doxygen-1.9.6 (for generating documentation)

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

Installation of Popt

Install popt by running the following commands:

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

If you have Doxygen-1.9.6 installed and wish to build the API documentation, issue:

sed -i 's@\./@src/@' Doxyfile &&
doxygen

To test the results, issue: make check.

Now, as the root user:

make install

If you built the API documentation, install it using the following commands issued by the root user:

install -v -m755 -d /usr/share/doc/popt-1.19 &&
install -v -m644 doxygen/html/* /usr/share/doc/popt-1.19

Command Explanations

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

Contents

Installed Programs: None

Installed Library: libpopt.so

Installed Directories: /usr/share/doc/popt-1.19

Short Descriptions

libpopt.so is used to parse command-line options.

9.80 Pth-2.0.7


Introduction to Pth

The Pth package contains a very portable POSIX/ANSI-C based library for Unix platforms which provides non-preemptive priority-based scheduling for multiple threads of execution (multithreading) inside event-driven applications. All threads run in the same address space of the server application, but each thread has its own individual program-counter, run-time stack, signal mask and errno variable.

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

Package Information

Pth Dependencies

Optional

GCC-12.2.0 (for gfortran) and libnsl-2.0.0

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

Installation of Pth

Caution

Don’t add the --enable-pthread parameter to the configure command below else you will overwrite the pthread library and interface header installed by the Glibc package in LFS.

Install Pth by running the following commands:

sed -i 's#$(LOBJS): Makefile#$(LOBJS): pth_p.h Makefile#' Makefile.in &&
./configure --prefix=/usr           \
            --disable-static        \
            --mandir=/usr/share/man &&
make

To test the results, issue: make test.

Now, as the root user:

make install &&
install -v -m755 -d /usr/share/doc/pth-2.0.7 &&
install -v -m644    README PORTING SUPPORT TESTS \
                    /usr/share/doc/pth-2.0.7

Command Explanations

sed -i ‘s#$(LOBJS) …: This sed fixes a race condition in the Makefile. It allows running make with multiple jobs (e.g., make -j4).

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

--mandir=/usr/share/man: This switch puts the man pages in /usr/share/man instead of /usr/man.

Contents

Installed Program: pth-config

Installed Library: libpth.so

Installed Directory: /usr/share/doc/pth-2.0.7

Short Descriptions

pth-config is a utility used to configure and build applications based on the pth(3) library. It can be used to query the C compiler and linker flags which are required to correctly compile and link the application against the pth(3) library

libpth.so contains the API functions used by the GNU Portable Threads Library.

9.81 Qca-2.3.5


Introduction to Qca

Qca aims to provide a straightforward and cross-platform crypto API, using Qt datatypes and conventions. Qca separates the API from the implementation, using plugins known as Providers.

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

Package Information

Qca Dependencies

Required

make-ca-1.12, CMake-3.25.2, Qt-5.15.8, and Which-2.21

Optional

Cyrus SASL-2.1.28, GnuPG-2.4.0, libgcrypt-1.10.1, libgpg-error-1.46, nss-3.88.1, NSPR-4.35, p11-kit-0.24.1, Doxygen-1.9.6, Which-2.21, and Botan

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

Installation of Qca

Fix the location of the CA certificates:

sed -i 's@cert.pem@certs/ca-bundle.crt@' CMakeLists.txt

Install Qca by running the following commands:

mkdir build &&
cd    build &&

cmake -DCMAKE_INSTALL_PREFIX=$QT5DIR            \
      -DCMAKE_BUILD_TYPE=Release                \
      -DQCA_MAN_INSTALL_DIR:PATH=/usr/share/man \
      .. &&
make

To test the results, issue make test.

Now, as the root user:

make install

Command Explanations

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

-DQCA_MAN_INSTALL_DIR:PATH=/usr/share/man: Install the qca man page in the normal location.

Contents

Installed Programs: mozcerts-qt5 and qcatool-qt5

Installed Libraries: libqca-qt5.so, libqca-cyrus-sasl.so, libqca-gcrypt.so, libqca-gnupg.so, libqca-logger.so, libqca-nss.so, libqca-ossl.so, and libqca-softstore.so

Installed Directories: $QT5DIR/include/Qca-qt5, $QT5DIR/lib/cmake/Qca-qt5, and $QT5DIR/lib/qca-qt5

Short Descriptions

mozcerts-qt5 is a command line tool for converting certdata.txt into outfile.pem files

qcatool-qt5 is a command line tool for performing various cryptographic operations with Qca

libqca-qt5.so is the Qt Cryptography Architecture (Qca) library.

9.82 Talloc-2.4.0


Introduction to Talloc

Talloc provides a hierarchical, reference counted memory pool system with destructors. It is the core memory allocator used in Samba.

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

Package Information

Talloc Dependencies

Optional

docbook-xml-4.5, docbook-xsl-nons-1.79.2 and libxslt-1.1.37 (To generate man pages), GDB-13.1, git-2.39.2, libnsl-2.0.0, libtirpc-1.3.3, Valgrind-3.20.0, and xfsprogs-6.1.1

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

Installation of Talloc

Install Talloc by running the following commands:

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

To check the results, issue make check.

Now, as the root user:

make install

Contents

Installed Programs: None

Installed Libraries: libpytalloc-util.cpython-311--linux-gnu.so, libtalloc.so, and talloc.cpython-311--linux-gnu.so (Python-3 Module)

Installed Directories: None

Short Descriptions

libtalloc.so contains a replacement for the Glibc malloc function.

9.83 telepathy-glib-0.24.2


Introduction to Telepathy GLib

The Telepathy GLib contains a library used by GLib based Telepathy components. Telepathy is a D-Bus framework for unifying real time communication, including instant messaging, voice calls and video calls. It abstracts differences between protocols to provide a unified interface for applications.

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

Package Information

Telepathy GLib Dependencies

Required

dbus-glib-0.112 and libxslt-1.1.37

gobject-introspection-1.74.0, and Vala-0.56.4

Optional

GTK-Doc-1.33.2

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/telepathy-glib

Installation of Telepathy Glib

If you intend to run the tests, one of them defaults to invoking /usr/bin/python and fails if it is absent, causing the second batch of tests to not run - unlike the other tests which can be overridden from the environment. Fix it with the following command:

sed -i 's%/usr/bin/python%&3%' tests/all-errors-documented.py

Install Telepathy GLib by running the following commands:

PYTHON=/usr/bin/python3 ./configure --prefix=/usr          \
                                    --enable-vala-bindings \
                                    --disable-static       &&
make

To test the results, issue: make check.

Now, as the root user:

make install

Command Explanations

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

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

--enable-gtk-doc: Use this parameter if GTK-Doc is installed and you wish to rebuild and install the API documentation.

Contents

Installed Programs: None

Installed Libraries: libtelepathy-glib.so

Installed Directories: /usr/include/telepathy-1.0 and /usr/share/gtk-doc/html/telepathy-glib

Short Descriptions

libtelepathy-glib.so contains the Telepathy GLib API functions.

9.84 Uchardet-0.0.8


Introduction to Uchardet

The Uchardet package contains an encoding detectory library which takes a sequence of bytes in an unknown character encoding and attempts to determine the encoding of the text.

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

Package Information

Uchardet Dependencies

Required

CMake-3.25.2

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

Installation of Uchardet

Install Uchardet by running the following commands:

mkdir build &&
cd    build &&

cmake -DCMAKE_INSTALL_PREFIX=/usr \
      -DBUILD_STATIC=OFF          \
      -Wno-dev ..                 &&
make

To test the results, issue: make test.

Now, as the root user:

make install

Command Explanations

-DBUILD_STATIC=OFF: This switch disables building the static version of the library.

Contents

Installed Programs: uchardet

Installed Libraries: libuchardet.so

Installed Directories: /usr/include/uchardet

Short Descriptions

uchardet detects what character set is used inside of a file

libuchardet.so provides an API for detecting the encoding of text in a file.

9.85 Umockdev-0.17.16


Introduction to Umockdev

The Umockdev package contains a framework that allows a developer to mock devices for use in unit testing.

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

Package Information

Umockdev Dependencies

Required

libgudev-237, libpcap-1.10.3, and Vala-0.56.4

Optional

GTK-Doc-1.33.2 and libgphoto2 (optional for tests)

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

Installation of Umockdev

Install Umockdev by running the following commands:

mkdir build &&
cd    build &&

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

To test the results, issue: PATH=$PATH:/usr/sbin ninja test. The addition to PATH is needed if you use the starting scripts in The Bash Shell Startup Files, because some tests need to run udevadm. One test needs to be run in an X session.

Now, as the root user:

ninja install

Command Explanations

-Dgtk_doc=true: Use this switch if you have GTK-Doc-1.33.2 installed and wish to rebuild and install the API documentation.

Contents

Installed Programs: umockdev-record, umockdev-run, and umockdev-wrapper

Installed Libraries: libumockdev-preload.so and libumockdev.so

Installed Directories: /usr/include/umockdev-1.0

Short Descriptions

umockdev-record records Linux devices and their ancestors from sysfs/udev or records ioctls for a device

umockdev-run runs a program under an umockdev testbed

umockdev-wrapper wraps a program around libumockdev-preload.so.0 through LD_PRELOAD

libumockdev.so provides API functions that allow mocking hardware devices for unit testing.

9.86 Wayland-1.21.0


Introduction to Wayland

Wayland is a project to define a protocol for a compositor to talk to its clients as well as a library implementation of the protocol.

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

Package Information

Wayland Dependencies

Required

libxml2-2.10.3

Optional

Doxygen-1.9.6, Graphviz-7.1.0 and xmlto-0.0.28 (to build the API documentation) and docbook-xml-4.5, docbook-xsl-nons-1.79.2 and libxslt-1.1.37 (to build the manual pages)

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

Installation of Wayland

Install Wayland by running the following commands:

mkdir build &&
cd    build &&

meson --prefix=/usr       \
      --buildtype=release \
      -Ddocumentation=false &&
ninja

To test the results, issue: env -u XDG_RUNTIME_DIR ninja test.

Now, as the root user:

ninja install

Command Explanations

-Ddocumentation=false: This switch is used to disable building of the API documentation. Remove it if you have installed optional dependencies.

Contents

Installed Programs: wayland-scanner

Installed Libraries: libwayland-client.so, libwayland-cursor.so, libwayland-egl.so, and libwayland-server.so

Installed Directories: /usr/share/wayland

Short Descriptions

wayland-scanner is a tool to generate proxy methods in wayland-client-protocol.h and wayland-server-protocol.h

libwayland-client.so contains API functions for writing Wayland applications

libwayland-cursor.so contains API functions for managing cursors in Wayland applications

libwayland-egl.so contains API functions for handling OpenGL calls in Wayland applications

libwayland-server.so contains API functions for writing Wayland compositors.

9.87 Wayland-Protocols-1.31


Introduction to Wayland-Protocols

The Wayland-Protocols package contains additional Wayland protocols that add functionality outside of protocols already in the Wayland core.

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

Package Information

Wayland-protocols Dependencies

Required

Wayland-1.21.0

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/wayland-protocols

Installation of Wayland-protocols

Install Wayland-protocols 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

Contents

Installed Programs: None

Installed Libraries: None

Installed Directories: /usr/share/wayland-protocols.

9.88 wpebackend-fdo-1.14.0


Introduction to wpebackend-fdo

The wpebackend-fdo package contains the Freedesktop.org backend for WPE WebKit and the WPE renderer.

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

Package Information

wpebackend-fdo Dependencies

Required

libepoxy-1.5.10, libwpe-1.14.1, and wayland-protocols-1.31

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/wpebackend-fdo

Installation of wpebackend-fdo

Install wpebackend-fdo by running the following commands:

mkdir build &&
cd    build &&

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

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 Libraries: libWPEBackend-fdo-1.0.so

Installed Directories: /usr/include/wpe-fdo-1.0

Short Descriptions

libWPEBackend-fdo-1.0.so contains functions that provide the freedesktop.org backend for WPE WebKit and the WPE renderer.

9.89 wv-1.2.9


Introduction to wv

The wv package contains tools for reading information from an MS Word document.

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

Package Information

wv Dependencies

Required

libgsf-1.14.50 and libpng-1.6.39

Optional

libwmf

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

Installation of wv

Install wv by running the following commands:

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

This package does not have a test suite.

Now, as the root user:

make install

Command Explanations

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

Contents

Installed Programs: wvSummary and several other wv* programs which are deprecated in favour of abiword: see https://wvware.sourceforge.net/

Installed Library: libwv-1.2.so

Installed Directory: /usr/share/wv

Short Descriptions

wvSummary displays the summary information from an MS Word document

libwv-1.2.so provides functions to access MS Word documents.

9.90 Xapian-1.4.22


Introduction to xapian

Xapian is an open source search engine library.

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

Package Information

Xapian Dependencies

Optional

Valgrind-3.20.0 (for tests)

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

Installation of Xapian

Install Xapian by running the following commands:

./configure --prefix=/usr    \
            --disable-static \
            --docdir=/usr/share/doc/xapian-core-1.4.22 &&
make

To run the test suite, issue: make check.

Now, as the root user:

make install

Contents

Installed Programs: copydatabase, quest, simpleexpand, simpleindex, simplesearch, xapian-check, xapian-compact, xapian-config, xapian-delve, xapian-metadata, xapian-pos, xapian-progsrv, xapian-replicate, xapian-replicate-server and xapian-tcpsrv

Installed Libraries: libxapian.so

Installed Directories: /usr/include/xapian, /usr/lib/cmake/xapian, /usr/share/doc/xapian-core-1.4.22, and /usr/share/xapian-core

Short Descriptions

copydatabase performs a document-by-document copy of one or more Xapian databases

quest is a command line tool to search through a database

simpleexpand is a simple example program demonstrating query expansion

simpleindex indexes each paragraph of a text file as a Xapian document

simplesearch is a simple command line search utility

xapian-check checks the consistency of a database or table

xapian-compact compacts a database, or merges and compacts several databases

xapian-config reports information about the installed xapian

xapian-delve inspects the contents of a Xapian database

xapian-metadata reads and writes user metadata

xapian-pos inspects the contents of a flint table for development or debugging

xapian-progsrv is a remote server for use with ProgClient

xapian-replicate replicates a database from a master server to a local copy

xapian-replicate-server services database replication requests from clients

xapian-tcpsrv is the TCP daemon for use with Xapian’s remote backend.