SoLo项目已发布,实现了完全静态的开发。 Linux使用 musl 构建的程序必须通过 dlopen() 加载系统上安装的 glibc 库,主要是 GPU 驱动程序。静态链接通常与 Vulkan 和 OpenGL 驱动程序不兼容,而这些驱动程序通常以共享库的形式提供,并使用 glibc 构建。SoLo 通过使用内置于可执行文件中的 ELF 加载器以及一个将 glibc 调用转换为 musl 进程运行时代码的层来克服这一限制。glibc 本身不会被加载到进程中,也不会向进程中添加第二个 libc 库。该代码使用 C++ 编写,并以 MIT 许可证发布。
该代码库包含一个可视化示例:一个不包含解释器或动态部分的静态可执行文件,使用标准的 Vulkan 方法查找系统上已安装的驱动程序,加载驱动程序及其依赖项,执行计算着色器,并将结果保存为 PNG 格式。作为持续集成的一部分,该示例已在 Alpine、Fedora 和 [此处应填写系统版本] 上进行了测试。 Ubuntu 使用来自这些发行版标准仓库的 Lavapipe 软件包。这种方法已经投入使用——它被用于创建 Shitty 终端模拟器的发布版本。
来源: opennet.ru
