Repolode
pg83

pg83/solo

완전 정적 musl Linux 바이너리에서 Vulkan ICD 같은 호스트의 glibc 링크 GPU 드라이버를 불러오는 dlfcn 스타일 .so 로더입니다.

스타
643
포크
15
열린 이슈
15
마지막 커밋
23일 전

어떤 프로젝트인가요?

SoLo는 특정 배포 문제를 해결합니다. 완전 정적으로 musl에 링크된 실행 파일은 일반적으로 호스트에 설치된 GPU 드라이버 공유 객체를 `dlopen()`할 수 없으며, 이런 객체는 대개 glibc를 기준으로 빌드됩니다. SoLo는 x86-64와 aarch64용 자체 ELF 로더를 기반으로 dlfcn 스타일 API를 제공하고, 프로세스의 musl 런타임 위에 glibc ABI 브리지를 구현합니다. 따라서 여전히 단일 정적 실행 파일로, 머신에 이미 설치된 드라이버를 사용할 수 있습니다.

저장소에는 호스트의 수정되지 않은 Vulkan ICD를 불러와 저장소에 포함된 compute shader를 실행하고 결과를 PNG로 기록하는 종단 간 Vulkan 데모가 들어 있습니다. glibc를 별도의 libc로 로드하지 않고, glibc의 import를 musl 위에 구현한 어댑터에 연결합니다. 구현되지 않은 함수는 심볼 이름과 버전 이름을 표시한 뒤 중단하는 스텁입니다. C++ 예외, 네 가지 TLS 모델, 심볼 버전 관리도 경계를 넘어 처리합니다.

이 프로젝트는 Linux 전용이며 한 번만 로드할 수 있습니다. `dlclose`는 성공하지만 이미지는 언로드하지 않습니다. 두 아키텍처에서 설치 수가 가장 많은 Debian 라이브러리 패키지 1000개의 공유 라이브러리를 불러오는 방식으로 CI에서 지원 범위를 테스트합니다.

핵심 기능

  • 01완전 정적 musl 바이너리용 dlfcn 스타일 `dlopen`/`dlsym` API를 제공합니다.
  • 02x86-64와 aarch64용 자체 ELF 로더를 포함합니다.
  • 03glibc ABI import를 프로세스에 이미 있는 musl 런타임에 연결합니다.
  • 04컨테이너나 AppImage 없이 호스트의 Vulkan ICD 드라이버를 불러옵니다.
  • 05compute shader로 PNG를 생성하는 사전 빌드 Vulkan 데모 바이너리를 제공합니다.

활용 사례

  • 호스트의 Vulkan 또는 OpenGL 드라이버가 필요한 단일 정적 Linux 바이너리를 배포할 때
  • 정적 musl 애플리케이션에서 GPU 컴퓨팅 또는 그래픽 작업을 실행할 때
  • 배포판을 함께 묶지 않고 musl 정적 프로그램에서 glibc로 빌드된 공유 라이브러리를 불러올 때
  • 사용자 공간 ELF 로더와 glibc-musl ABI 브리지가 구현된 방식을 살펴볼 때

빠른 시작

  1. 1

    릴리스 페이지에서 미리 빌드된 Vulkan 데모 바이너리를 다운로드합니다

    curl -LO https://github.com/pg83/solo/releases/latest/download/vulkan-x86_64
  2. 2

    바이너리에 실행 권한을 부여합니다

    chmod +x vulkan-x86_64
  3. 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에 링크된 실행 파일은 일반적으로 호스트에 설치된 GPU 드라이버 공유 객체를 `dlopen()`할 수 없으며, 이런 객체는 대개 glibc를 기준으로 빌드됩니다. SoLo는 x86-64와 aarch64용 자체 ELF 로더를 기반으로 dlfcn 스타일 API를 제공하고, 프로세스의 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

요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.

관련 프로젝트