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.
Note
Development versions of BLFS may not build or run
some packages properly if LFS or dependencies have been updated
since the most recent stable versions of the books.
Package Information
Additional Downloads
GLib Dependencies
Recommended
libxslt-1.1.39 and
pcre2-10.42
Optional
dbus-1.14.10 (for some tests),
Fuse-3.16.2 and
bindfs
(both needed for one test),
GDB-13.2 (for bindings),
docbook-xml-4.5,
docbook-xsl-nons-1.79.2,
GTK-Doc-1.33.2 (to build API documentation),
glib-networking-2.78.0 (for some tests, but this is a circular
dependency), and
sysprof
Additional Runtime Dependencies
gobject-introspection-1.78.1
(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.27, respectively.
These two utilities are also needed for some tests.
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.38, 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-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 setup .. \
--prefix=/usr \
--buildtype=release \
-Dman=true &&
ninja
Note
If libxslt-1.1.39 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.78.1 &&
cp -r ../docs/reference/{gio,glib,gobject} /usr/share/doc/glib-2.78.1
You should now install desktop-file-utils-0.27 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.
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.