Опубликован проект SoLo, позволяющий полностью статическим Linux-программам, собранным с musl, загружать через dlopen() установленные в системе glibc-библиотеки, в первую очередь GPU-драйверы. Обычно статическая сборка несовместима с драйверами Vulkan и OpenGL, которые дистрибутивы поставляют в виде разделяемых библиотек, собранных с glibc. SoLo снимает это ограничение при помощи встроенного в исполняемый файл загрузчика ELF и прослойки, транслирующей вызовы glibc в musl-рантайм процесса — сам glibc в процесс не загружается, второго libc в процессе не появляется. Код написан на C++ и распространяется под лицензией MIT. В репозиторий входит наглядный пример: статический исполняемый файл, в котором нет ни интерпретатора, ни динамической секции, штатным для Vulkan способом находит установленный в системе драйвер, загружает его вместе с зависимостями, выполняет вычислительный шейдер и сохраняет результат в PNG. В рамках непрерывной интеграции пример проверяется на Alpine, Fedora и Ubuntu с пакетами Lavapipe из штатных репозиториев этих дистрибутивов. Подход уже используется на практике — им формируются релизные сборки эмулятора терминала Shitty.
Источник: https://www.opennet.ru/opennews/art.shtml?num=66103
Источник: https://www.opennet.ru/opennews/art.shtml?num=66103