OpenGL is an older high-level graphics API which most graphical packages on Linux use today.
In BLFS, OpenGL libraries (libGL and
others) are installed from Mesa. Multiple Linux distributions install
those libraries from libglvnd-1.7.0. GLFS has made the same decision
as those distributions and expects you to install libglvnd-1.7.0.
Despite this, Mesa-25.3.1 is required for a lot of systems
because it provides necessary drivers, not just OpenGL libraries.
GLFS makes the instructions in that package request libglvnd support
so that Mesa does not build its own OpenGL libraries.
All packages support libglvnd in BLFS. Whenever BLFS says a package depends on Mesa, it means that package will need OpenGL libraries (libglvnd-1.7.0) and/or libgbm (libgbm-1.0.4 or libgbm from Mesa-25.3.1). Certain pages will also link to GLU. However, you must install this book's version of GLU-9.0.3 to ensure compatibility with libglvnd.
If you haven't installed any packages relying on OpenGL yet, go ahead
and install libglvnd-1.7.0 and the driver for your GPU. If
you have installed Mesa from BLFS, you probably have the OpenGL
libraries provided by Mesa. The main issues you will come across by
transtioning are soname differences in libGL as well as potential ABI issues. As a result,
many packages will require reinstallation in order to use the right
libraries. For that reason, transitioning isn't recommended and it
might be better to reinstall LFS and its subprojects with libglvnd in
mind.
While you can install most of the packages in GLFS with Mesa's OpenGL libraries, and even enable the installation of those libraries from Mesa in this book by removing a documented option, it is strongly recommended that you don't. GLFS nor SLFS support that configuration.
There is more information regarding OpenGL and libglvnd. If you just want to go through the book as intended, feel free to skip to installing libglvnd.
The primary reason GLFS expects users to install libglvnd is that
NVIDIA and several packages and AppImages require libglvnd either
directly or indirectly. For NVIDIA, it requires libglvnd outright,
while AppImages suffer from the problem mentioned earlier in this
section: differences in sonames, as well as a missing library.
libGL has a soname that's different
from Mesa's and libGLX is not
included from Mesa. This breaks most AppImages. As for other
packages, their build systems can cause configuration to fail
without libglvnd as libOpenGL doesn't
exist, and the build systems don't want to combine libGL with libEGL.
These issues leak into Supplemental LFS, like with Hyprland and OBS-Studio. Flatpak may suffer from the same issue. BLFS may suffer from them at some point, depending on when projects make changes that require libglvnd in some form.