Skip to content
GitHub·

💻SoLo Loads GPU Drivers at Runtime for Static Binaries

Static binaries now get dynamic GPU access without containers

TL;DR

SoLo lets static Linux binaries load user's existing glibc-linked GPU drivers at runtime, eliminating the need for containers or AppImages. It works on any Linux with a Vulkan driver.

SoLo is a .so loader that enables static Linux binaries to dynamically load users' existing glibc-linked GPU drivers at runtime, without needing containers or AppImages. This means developers can deploy statically linked applications that only become interactive when they need the GPU, reducing overhead and improving portability. SoLo includes an end-to-end Vulkan proof where a fully static executable loads the host's unmodified Vulkan driver, runs a compute shader, and writes the result to a PNG file. The project demonstrates loading shared libraries of 1,000 most-installed Debian packages through SoLo on both x86-64 and aarch64 architectures.

SoLo Loads GPU Drivers at Runtime for Static Binaries — GitHub

Key Points

1

SoLo loads shared libraries of 1,000 most-installed Debian packages through its own ELF loader on both x86-64 and aarch64 architectures.

2

The Vulkan proof-of-concept runs a compute shader in a fully static executable that loads the host's unmodified Vulkan driver to produce a 512×512 RGBA image.

3

Dependencies are loaded recursively, ensuring full compatibility with system-installed libraries without requiring glibc.

4

SoLo includes an end-to-end example in bin/vulkan and main.cpp for developers to reproduce the experiment.

5

The project is built using IX, a source-first build system, and supports CI on Alpine/musl with GCC, Fedora with GCC, and Ubuntu with Clang.

Why It Matters

If you're deploying statically linked applications that require GPU access, SoLo lets your binaries load the host's existing Vulkan driver at runtime. This eliminates the need for containers or AppImages, improving portability and reducing overhead. The Vulkan proof-of-concept demonstrates a fully static executable running compute shaders with no dynamic linking required.

static-binariesgpu-accessvulkan-driverelf-loader

Frequently Asked Questions

Why does this matter?

If you're deploying statically linked applications that require GPU access, SoLo lets your binaries load the host's existing Vulkan driver at runtime. This eliminates the need for containers or AppImages, improving portability and reducing overhead. The Vulkan proof-of-concept demonstrates a fully static executable running compute shaders with no dynamic linking required.

What happened?

SoLo lets static Linux binaries load user's existing glibc-linked GPU drivers at runtime, eliminating the need for containers or AppImages. It works on any Linux with a Vulkan driver.

Comments

Subscribe to join the conversation...

Be the first to comment

Enjoyed this article?

Get it daily. 7am. Free. Reads in 5 minutes.

Join 3,181 builders reading daily.

Also get