无法将图形驱动程序添加到 SDL

问题描述 投票:0回答:0

我已经成功构建并运行了我用 Rust 编写的游戏引擎,并通过 SDL 为图形提供动力。唯一的问题是,SDL 在为 x86_64-linux-musl 编译时无法加载图形支持。

当我为 Musl 编译 X Server Client 并尝试打开 X 支持时,它拒绝打开。

build-linux.yml 的一部分

# Install Dependencies
- name: Update APT Package Manager
  run: sudo apt update
- name: Install APT Packages
  run: sudo apt -y install unzip musl-tools binutils patchelf # libtool autoconf musl musl-dev cmake gcc g++ libc6-dev-amd64-cross libgl1-mesa-dev libegl1-mesa-dev
- name: Install X Client Related APT Packages
  run: sudo apt -y install automake xutils-dev x11proto-dev libxcb1-dev xcb-proto python3-xcbgen

# ----------------------------------------
# Setup Build Environment
- name: Make Build Directory
  run: mkdir ${{ github.workspace }}/build
- name: Setup Build Environment
  run: |
    mkdir -p ${{ github.workspace }}/build/include
    ln -s /usr/include/X11 ${{ github.workspace }}/build/include/X11
    # ln -s /usr/include/xcb ${{ github.workspace }}/build/include/xcb

# Build Xauthority Handler
- name: Clone Xauthority Handler
  working-directory: ${{ github.workspace }}/build
  run: git clone https://gitlab.freedesktop.org/xorg/lib/libxau
- name: Create Configure Script
  working-directory: ${{ github.workspace }}/build/libxau
  run: ${{ github.workspace }}/build/libxau/autogen.sh
- name: Run Configure Script
  working-directory: ${{ github.workspace }}/build/libxau
  run: CFLAGS="-I${{ github.workspace }}/build/include" CC=musl-gcc ./configure --host x86_64-linux-gnu
- name: Make X C Binding
  working-directory: ${{ github.workspace }}/build/libxau
  run: make

# Build X C Binding
- name: Clone X C Binding
  working-directory: ${{ github.workspace }}/build
  run: git clone https://gitlab.freedesktop.org/xorg/lib/libxcb
- name: Create Configure Script
  working-directory: ${{ github.workspace }}/build/libxcb
  run: ${{ github.workspace }}/build/libxcb/autogen.sh
- name: Run Configure Script
  working-directory: ${{ github.workspace }}/build/libxcb
  run: CFLAGS="-I${{ github.workspace }}/build/libxau/include -I${{ github.workspace }}/build/include -L${{ github.workspace }}/build/libxau/.libs" CC=musl-gcc ./configure --host x86_64-linux-gnu
- name: Make X C Binding
  working-directory: ${{ github.workspace }}/build/libxcb
  run: make

# Build X Server Client
- name: Clone X Server Client
  working-directory: ${{ github.workspace }}/build
  run: git clone https://gitlab.freedesktop.org/xorg/lib/libx11.git
- name: Create Configure Script
  working-directory: ${{ github.workspace }}/build/libx11
  run: ${{ github.workspace }}/build/libx11/autogen.sh
- name: Run Configure Script
  working-directory: ${{ github.workspace }}/build/libx11
  run: CFLAGS="-I${{ github.workspace }}/build/include -L${{ github.workspace }}/build/libxcb/src/.libs" CC=musl-gcc ./configure --host x86_64-linux-gnu
- name: Make X Server Client
  working-directory: ${{ github.workspace }}/build/libx11
  run: make
# ----------------------------------------

# Build SDL2
- name: Deleting Old CMake Cache
  run: rm -rf ${{ github.workspace }}/android/app/jni/SDL/build
- name: Initialize CMake
  run: cmake -DCMAKE_TOOLCHAIN_FILE=${{ github.workspace }}/.toolchains/TC-musl-gcc.cmake -S ${{ github.workspace }}/android/app/jni/SDL -B ${{ github.workspace }}/android/app/jni/SDL/build -DCMAKE_BUILD_RPATH=/lib/x86_64-linux-musl # -DSDL_WAYLAND=OFF -DSDL_PULSEAUDIO=OFF -DSDL_IBUS=OFF
- name: Make SDL2
  run: cmake --build ${{ github.workspace }}/android/app/jni/SDL/build

我试图让我的游戏引擎在任何 x86_64 Linux 发行版上运行,而不会遇到麻烦或不同的发行版特定包。该项目从尝试不停留在比我自己的笔记本电脑使用的版本更新的最低版本的 glibc 上,到现在尝试添加对您期望的所有驱动程序的支持。这包括图形、声音、蓝牙控制器支持等......

目标是让它在任何 x86_64 Linux 系统上运行,而不会给最终用户带来麻烦,也不会给我带来许可问题(我使用 Zlib 许可来匹配 SDL)。

我最后提到了许可问题,因为我将这些库与我的游戏引擎打包在一起并设置运行路径以使引擎尽可能独立。我没有打包的唯一库是来自 musl 的 libc.so,因为在 Debian 仓库中有一个包,但可能必须为其他系统打包它。

我的笔记本电脑运行的是 Debian 提供的最新 glibc,而 Github Ubuntu Runner 上的 glibc 明显比那个更新。

虽然这不应该与这个问题相关,因为我的问题更多是关于构建 SDL 而不是我的游戏引擎,但我的游戏引擎是用 Rust 编写的。

build graphics driver sdl musl
© www.soinside.com 2019 - 2024. All rights reserved.