基于 C++17 的跨平台 UI 框架,支持 GLFW/SDL2 窗口后端与 OpenGL/Vulkan 渲染后端。
pg83/solo
一个 dlfcn 风格的 .so 加载器,让完全静态的 musl Linux 程序直接加载宿主机上基于 glibc 的 GPU 驱动(如 Vulkan ICD)。
- Star
- 643
- Fork
- 15
- 未关闭 Issue
- 15
- 最近提交
- 23天前
这是什么?
SoLo 解决的是一个具体的部署问题:完全静态链接 musl 的可执行文件通常无法 dlopen() 宿主机上已安装的 GPU 驱动共享库,而这些库一般基于 glibc 编译。SoLo 提供 dlfcn 风格的 API,底层是自研的 ELF 加载器(支持 x86-64 和 aarch64),并在进程已有的 musl 运行时之上实现了 glibc ABI 桥接层。最终产物仍是一个静态可执行文件,却能使用机器上已有的驱动。
仓库附带了一个端到端的 Vulkan 示例:静态程序加载宿主机未经修改的 Vulkan ICD,执行随仓库提供的计算着色器,并把结果写入 PNG。glibc 不会作为第二个 libc 加载,它的导入符号被映射到 musl 之上的适配层;尚未实现的函数会以桩函数形式存在,被调用时会报出符号和版本名并终止。C++ 异常、四种 TLS 模型和符号版本在两个世界之间也都有处理。
该项目仅支持 Linux,且只加载一次:dlclose 会返回成功但不会真正卸载镜像。项目在 CI 中加载 Debian 最常安装的 1000 个库包中的共享库,覆盖 x86-64 和 aarch64 两种架构。
核心功能
- 01为完全静态链接的 musl 程序提供 dlfcn 风格的 dlopen/dlsym 接口。
- 02内置面向 x86-64 和 aarch64 的 ELF 加载器。
- 03将 glibc ABI 导入桥接到进程已有的 musl 运行时上。
- 04无需容器或 AppImage 即可加载宿主机的 Vulkan ICD 驱动。
- 05提供预编译的 Vulkan 示例程序,通过计算着色器生成 PNG。
适用场景
- 分发需要调用宿主机 Vulkan 或 OpenGL 驱动的单一静态 Linux 可执行文件。
- 在静态链接的 musl 应用中运行 GPU 计算或图形任务。
- 在 musl 静态程序中加载 glibc 编译的共享库,而无需打包整个发行版。
- 学习用户态 ELF 加载器和 glibc 到 musl ABI 桥接层的实现方式。
快速上手
- 1
从发布页下载预编译的 Vulkan 演示程序
curl -LO https://github.com/pg83/solo/releases/latest/download/vulkan-x86_64 - 2
赋予该程序可执行权限
chmod +x vulkan-x86_64 - 3
运行演示程序,使用系统的 Vulkan 驱动生成 512x512 的 PNG 图片
./vulkan-x86_64 hello.png
使用前须知
- 仅支持 Linux,且限于 x86-64 和 aarch64 架构。
- 要运行 GPU 演示,需要系统已安装 Vulkan 驱动。
- 这是一种较为小众的实验性方案,用于加载与 glibc 链接的系统库。
标签
常见问题
- solo 是什么?
- 一个 dlfcn 风格的 .so 加载器,让完全静态的 musl Linux 程序直接加载宿主机上基于 glibc 的 GPU 驱动(如 Vulkan ICD)。 SoLo 解决的是一个具体的部署问题:完全静态链接 musl 的可执行文件通常无法 dlopen() 宿主机上已安装的 GPU 驱动共享库,而这些库一般基于 glibc 编译。SoLo 提供 dlfcn 风格的 API,底层是自研的 ELF 加载器(支持 x86-64 和 aarch64),并在进程已有的 musl 运行时之上实现了 glibc ABI 桥接层。最终产物仍是一个静态可执行文件,却能使用机器上已有的驱动。
- solo 可以免费使用吗?用的什么许可证?
- solo 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
- solo 还在维护吗?
- 活跃维护中。solo 最近一次提交是在 2026年9月29日。
- solo 适合用来做什么?
- 分发需要调用宿主机 Vulkan 或 OpenGL 驱动的单一静态 Linux 可执行文件。 在静态链接的 musl 应用中运行 GPU 计算或图形任务。 在 musl 静态程序中加载 glibc 编译的共享库,而无需打包整个发行版。 学习用户态 ELF 加载器和 glibc 到 musl ABI 桥接层的实现方式。
- solo 怎么安装和运行?
- 从发布页下载预编译的 Vulkan 演示程序: curl -LO https://github.com/pg83/solo/releases/latest/download/vulkan-x86_64 赋予该程序可执行权限: chmod +x vulkan-x86_64 运行演示程序,使用系统的 Vulkan 驱动生成 512x512 的 PNG 图片: ./vulkan-x86_64 hello.png
- 在哪里获取 solo?
- 源代码和安装说明在 GitHub 上:https://github.com/pg83/solo
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
一款 MIT 许可的开源 C++20 游戏引擎,基于 Vulkan、Metal 和 WebGPU 渲染,提供跨平台编辑器与浏览器版本。
免费开源的桌面应用,使用 AI 模型放大并增强低分辨率图片,支持 Linux、macOS 和 Windows。
纯 C 推理引擎,通过从磁盘按需读取路由专家,在普通硬件上运行超大混合专家(MoE)模型。
一个用 C++ 编写的高性能神经网络推理框架,用于在手机、嵌入式和桌面设备上运行深度学习模型。
面向 Android、iOS、桌面端和 WebGL2 的实时物理渲染引擎,在 Android 上力求小巧高效。