Das Projekt SoLo ermöglicht es vollstĂ€ndig statischen Linux-Programmen, die mit musl erstellt wurden, ĂŒber dlopen() die im System installierten glibc-Bibliotheken, insbesondere GPU-Treiber, zu laden. Normalerweise ist eine statische VerknĂŒpfung mit Vulkan- und OpenGL-Treibern, die von den Distributionen als gemeinsam genutzte Bibliotheken, die mit glibc erstellt wurden, bereitgestellt werden, nicht kompatibel. SoLo beseitigt diese EinschrĂ€nkung durch einen im ELF-BinĂ€rformat integrierten Loader und eine Schicht, die glibc-Aufrufe in die musl-Laufzeit des Prozesses ĂŒbersetzt â glibc wird dabei nicht in den Prozess geladen und es erscheint keine zweite libc im Prozess. Der Code ist in C++ geschrieben und wird unter der MIT-Lizenz vertrieben.
Im Repository ist ein anschauliches Beispiel enthalten: eine statische ausfĂŒhrbare Datei, die keinen Interpreter und keinen dynamischen Abschnitt enthĂ€lt, findet den im System installierten Treiber auf die fĂŒr Vulkan typische Weise, lĂ€dt ihn zusammen mit den AbhĂ€ngigkeiten, fĂŒhrt den Berechnungs-Shader aus und speichert das Ergebnis in PNG. Im Rahmen der kontinuierlichen Integration wird das Beispiel auf Alpine, Fedora und Ubuntu mit den Lavapipe-Paketen aus den offiziellen Repositories dieser Distributionen getestet. Der Ansatz wird bereits praktisch eingesetzt - er bildet die Release-Builds des Terminalemulators Shitty.
Quelle: opennet.ru
