I had also similar problem, where I needed to compile the ModemManager, which needs a new version of GLib-2 on the OS where this version of GLib-2 is not available via package manager (Ubuntu 18.04). I also did not want to break window manager (which I assumed has some dependencies on the glib-2).
The steps to compile with a newest version of GLib-2 which worked for me:
- Compile
glib from source (2022, June 2 it is hosted here: https://gitlab.gnome.org/GNOME/glib/). Recent versions use meson build system (so you need to install meson first if you do not have it), and the compilation goes:
meson build
cd build
meson compile
- Install glib to some local folder using meson (different from the default location as it will overwrite existing GLib-2 files):
meson install --destdir /local/path/to/where/you/want/GLib-2/to/be/installed
I will use the /local/path/to/where/you/want/GLib-2/to/be/installed as ${install_dir} below, but in the commands you need to substitute the ${install_dir} with your path.
- Modify the
*.pc PACKAGE_CONFIG files of the custom installation of GLib-2, in the ${install_dir}/usr/local/lib/x86_64-linux-gnu/pkgconfig directory:
gio-2.0.pc
gio-unix-2.0.pc
glib-2.0.pc
gmodule-2.0.pc
gmodule-export-2.0.pc
gmodule-no-export-2.0.pc
gobject-2.0.pc
gthread-2.0.pc
Each of the file starts with a prefix:
prefix=/usr/local
which one needs to replace with the locally installed prefix:
prefix=${install_dir}/usr/local
Finally, invoke the configuration step of the ModemManager as follows:
PGK_CONFIG=${install_dir}/usr/local/lib/x86_64-linux-gnu/pkgconfig meson build
This way I was able to compile the ModemManager with a newer version of GLib-2 than the OS provides.