宣言的DSLを中心に構成された、GLFW/SDL2のウィンドウバックエンドとOpenGL/Vulkan描画に対応するクロスプラットフォームC++17 UIフレームワーク。
pg83/solo
完全静的な musl Linux バイナリから、Vulkan ICD などホストの glibc 依存 GPU ドライバーを読み込める、dlfcn 形式の .so ローダー。
- スター
- 643
- フォーク
- 15
- 未解決の Issue
- 15
- 最終コミット
- 23 日前
これは何?
SoLo は、完全静的な musl リンクの実行ファイルから、通常は glibc 向けにビルドされているホスト上の GPU ドライバー共有オブジェクトを dlopen() できないという、特定のデプロイ上の課題を解決します。SoLo は、x86-64 と aarch64 に対応した独自の ELF ローダーと、プロセスの musl ランタイム上に実装された glibc ABI ブリッジを使って、dlfcn 形式の API を提供します。その結果、単一の静的実行ファイルのまま、マシンにインストール済みのドライバーを利用できます。
リポジトリには、ホスト上の改変されていない Vulkan ICD を読み込み、同梱の計算シェーダーを実行して、出力を PNG に書き出す Vulkan の一連の動作を示すデモが含まれています。glibc を 2 つ目の libc として読み込むことはありません。glibc のインポートは musl 上のアダプターに割り当てられ、未実装の関数はシンボル名とバージョン名を示して異常終了するスタブになります。C++ 例外、4 種類の TLS モデル、シンボルバージョニングにも境界を越えて対応しています。
このプロジェクトは Linux 専用で、読み込みは一度限りです。dlclose は成功しますが、イメージはアンロードされません。対応状況は、両アーキテクチャで、インストール数上位 1000 件の Debian ライブラリパッケージの共有ライブラリを読み込む CI テストによって確認されています。
主な機能
- 01完全静的な musl バイナリ向けに、dlfcn 形式の dlopen/dlsym API を提供します。
- 02x86-64 と aarch64 に対応した独自の ELF ローダーを備えています。
- 03glibc ABI のインポートを、プロセスが使用する既存の musl ランタイムに橋渡しします。
- 04コンテナや AppImage を使わずに、ホストの Vulkan ICD ドライバーを読み込みます。
- 05計算シェーダーを使って PNG を書き出す、ビルド済みの Vulkan デモバイナリが付属します。
ユースケース
- ホストの Vulkan または OpenGL ドライバーを必要とする、単一の静的 Linux バイナリを配布する。
- 静的 musl アプリケーションから GPU 計算やグラフィックスの処理を実行する。
- ディストリビューション環境を同梱せずに、musl 静的プログラムから glibc 向け共有ライブラリを読み込む。
- ユーザー空間 ELF ローダーと glibc-to-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
使う前に知っておきたいこと
- x86-64 および aarch64 アーキテクチャの Linux のみ対応しています。
- GPU デモを動作させるには、ホストに Vulkan ドライバーがインストールされている必要があります。
- glibc にリンクされたホストライブラリを読み込むための、まだニッチで実験的なアプローチです。
トピック
よくある質問
- solo とは?
- 完全静的な musl Linux バイナリから、Vulkan ICD などホストの glibc 依存 GPU ドライバーを読み込める、dlfcn 形式の .so ローダー。 SoLo は、完全静的な musl リンクの実行ファイルから、通常は glibc 向けにビルドされているホスト上の GPU ドライバー共有オブジェクトを dlopen() できないという、特定のデプロイ上の課題を解決します。SoLo は、x86-64 と aarch64 に対応した独自の ELF ローダーと、プロセスの musl ランタイム上に実装された glibc ABI ブリッジを使って、dlfcn 形式の API を提供します。その結果、単一の静的実行ファイルのまま、マシンにインストール済みのドライバーを利用できます。
- solo は無料で使えますか?ライセンスは?
- solo は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- solo は今もメンテナンスされていますか?
- 活発にメンテナンス中。solo の最終コミットは 2026年9月29日 です。
- solo は何に使えますか?
- ホストの Vulkan または OpenGL ドライバーを必要とする、単一の静的 Linux バイナリを配布する。 静的 musl アプリケーションから GPU 計算やグラフィックスの処理を実行する。 ディストリビューション環境を同梱せずに、musl 静的プログラムから glibc 向け共有ライブラリを読み込む。 ユーザー空間 ELF ローダーと glibc-to-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
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
Vulkan/Metal/WebGPUレンダラー、ECS、クロスプラットフォームエディター、ブラウザー向けWebGPUビルドを備えた、MITライセンスのオープンソースC++20ゲームエンジン。
Linux、macOS、Windowsで動作する、AIアップスケーリングモデルで低解像度画像を拡大・高画質化する無料のオープンソースデスクトップアプリ。
ルーティングされたエキスパートをディスクから読み込み、一般的なハードウェアで超大規模MoEモデルを動かす純C製推論エンジン。
モバイル、組み込み機器、デスクトップで深層学習モデルを実行するための、高性能なC++ニューラルネットワーク推論フレームワークです。
Androidでの軽量・高効率な動作を重視して設計された、Android、iOS、Linux、macOS、Windows、WebGL2対応のリアルタイム物理ベースレンダリングエンジン。