Unable to compile after installing SplashKit on OpenEuler

WSL2环境下运行 OpenEuler 25.09 Dev Station
按照官网命令 curl -s https://raw.githubusercontent.com/splashkit/skm/master/install-scripts/skm-install.sh | bash 控制台安装SplashKit报错

如果按照官网安装教程运行 sudo apt-get update && sudo apt-get upgrade 会报 sudo: apt-get: command not found

使用命令 clang++ "TYK AFL Score.cpp" utilities.cpp -o test -l SplashKit -Wall进行编译,头文件会报错

skm命令检验,显示安装成功的。git也安装成功的。

Image

源代码:

源文件:

答案内容由AI生成,仅供参考:

:white_check_mark: 总结

问题 原因 解决方案
apt-get 命令找不到 使用了 Debian 命令 改用 dnf
头文件 splashkit.h 找不到 安装路径未设置 手动设置 -I$SKM_PATH/include
skm 命令缺失 安装脚本未部署完整 手动安装 SDK 并配置 PATH
CMake 找不到依赖 缺少 -devel 安装 SDL2_*-devel 等开发包

:end_arrow: 结论SplashKit 官方安装脚本不兼容 openEuler,必须手动安装 SDK 并配置开发环境。若主要用于学习或开发,建议切换至 Ubuntu WSL 以获得完整支持。

点击此处查看详细分析解答

在 openEuler 25.09 DevStation (WSL2) 中安装 SplashKit 编译失败问题分析与解决方案

根据您提供的详细信息,您在 WSL2 环境下运行 openEuler 25.09 DevStation 时,尝试安装并使用 SplashKit 进行 C++ 开发,但遇到了一系列安装和编译问题。以下是对问题的综合分析与解决建议。


:magnifying_glass_tilted_left: 问题总结

  1. SplashKit 安装脚本执行失败(CMake 找不到依赖包)

    • 安装过程中提示多个依赖如 SDL2_ttf, SDL2_image, libcurl 等未找到。
    • 报错信息明确指出:Package 'xxx' not found
  2. apt-get 命令不可用

    • 执行 sudo apt-get update 提示 sudo: apt-get: command not found
    • 原因:apt 是 Debian/Ubuntu 系列的包管理器;openEuler 使用的是 dnfyum
  3. 编译时头文件缺失

    • 编译 C++ 文件报错:'splashkit.h' file not found
    • 说明安装过程虽然声称“成功”,但实际未正确配置头文件路径或库路径
  4. skm 命令不可用

    • skm help 报错提示 Missing skm command,说明命令未加入 PATH 或未安装

:pushpin: 根本原因分析

:white_check_mark: 1. 包管理系统差异:apt 不适用于 openEuler

  • openEuler 是基于 RHEL/CentOS 系列的发行版,其包管理器为 dnfyum
  • 使用 apt-get完全错误的操作,该命令在 openEuler 中默认不存在。

:cross_mark: 错误命令:

sudo apt-get update && sudo apt-get upgrade

:white_check_mark: 正确命令应为:

sudo dnf update

:white_check_mark: 2. 依赖库名称不同(Debian vs openEuler)

Debian/Ubuntu 包名 openEuler/RHEL 对应包名 是否可用
libsdl2-dev SDL2-devel :white_check_mark:
libsdl2-ttf-dev SDL2_ttf-devel :white_check_mark:
libsdl2-image-dev SDL2_image-devel :white_check_mark:
libsdl2-mixer-dev SDL2_mixer-devel :white_check_mark:
libsdl2-gfx-dev SDL2_gfx-devel :white_check_mark:
libcurl4-openssl-dev libcurl-devel :white_check_mark:

:warning: 安装脚本中查找的 pkg-config 模块名称为 sd12(应为 sdl2,拼写错误?),这可能是脚本自身 bug。


:white_check_mark: 3. SplashKit 官方安装脚本未适配非 Debian 系统

  • 官方安装脚本 skm-install.sh 主要面向 Ubuntu/Debian 和 macOS。
  • 它依赖 aptbrew,在 openEuler 这类基于 rpm 的系统上大概率会失败或部分失效
  • 即使下载了二进制文件,也可能因为缺少开发依赖库导致无法使用。

:white_check_mark: 解决方案

步骤 1:修复基础环境与包管理

# 更新系统
sudo dnf update -y

# 安装基本开发工具
sudo dnf groupinstall "Development Tools" -y

# 安装 CMake(确认版本是否满足需求)
sudo dnf install cmake -y

# 安装 Git(已安装可跳过)
sudo dnf install git -y

步骤 2:安装 SplashKit 所需的开发依赖

sudo dnf install \
  SDL2-devel \
  SDL2_ttf-devel \
  SDL2_image-devel \
  SDL2_mixer-devel \
  SDL2_gfx-devel \
  libcurl-devel \
  pkgconfig \
  clang \
  gcc-c++ \
  make \
  wget \
  tar \
  unzip \
  -y

:light_bulb: 注意:openEuler 中 pkgconfig 是包名,安装后可通过 pkg-config 命令查找库。


步骤 3:手动安装 SplashKit(绕过失败脚本)

由于自动脚本不可靠,建议手动安装:

方法一:从 GitHub 下载预编译 SDK(推荐)

# 创建安装目录
mkdir -p ~/splashkit
cd ~/splashkit

# 下载适用于 Linux 的预编译版本(注意:需确认有无 aarch64/x86_64 支持)
# 示例:假设官方提供 linux-x64.zip
wget https://github.com/splashkit/splashkit-sdk/releases/latest/download/splashkit-linux-x64.zip
unzip splashkit-linux-x64.zip

# 设置环境变量(添加到 ~/.bashrc)
echo 'export SKM_PATH="$HOME/splashkit/splashkit-linux-x64"' >> ~/.bashrc
echo 'export PATH="$PATH:$SKM_PATH/bin"' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$SKM_PATH/lib"' >> ~/.bashrc

# 加载环境
source ~/.bashrc

方法二:尝试本地构建(高级用户)

若需从源码构建,需确保所有 .pc 文件存在于 /usr/lib64/pkgconfig/ 并可通过 pkg-config --exists SDL2 && echo yes 验证。


步骤 4:验证安装与头文件路径

# 检查头文件是否存在
ls $SKM_PATH/include/splashkit.h

# 检查库文件
ls $SKM_PATH/lib/libsplashkit.*

# 添加到编译命令
clang++ "TYK AFL Score.cpp" utilities.cpp -o test \
  -I$SKM_PATH/include \
  -L$SKM_PATH/lib \
  -lSplashKit \
  -Wall

步骤 5:确认 skm 命令可用

如果 SDK 包含 skm 可执行文件:

# 查看是否有 skm
ls $SKM_PATH/bin/skm

# 测试
skm version

否则,说明当前版本不支持 WSL 或未打包该命令。


:hammer_and_wrench: 建议替代方案(针对 openEuler/WSL)

方案 A:使用 Ubuntu WSL 镜像(最兼容)

由于 SplashKit 主要为 Ubuntu 设计,强烈建议改用 Ubuntu WSL

wsl --install -d Ubuntu

然后在 Ubuntu 中运行官方安装命令即可成功。

方案 B:使用 Docker 容器运行 SplashKit

编写 Dockerfile 封装依赖环境:

FROM ubuntu:22.04
RUN apt update && apt install -y wget build-essential clang
RUN wget ... # 安装 SplashKit
CMD ["/bin/bash"]

:books: 参考资源


:white_check_mark: 总结

问题 原因 解决方案
apt-get 命令找不到 使用了 Debian 命令 改用 dnf
头文件 splashkit.h 找不到 安装路径未设置 手动设置 -I$SKM_PATH/include
skm 命令缺失 安装脚本未部署完整 手动安装 SDK 并配置 PATH
CMake 找不到依赖 缺少 -devel 安装 SDL2_*-devel 等开发包

:end_arrow: 结论SplashKit 官方安装脚本不兼容 openEuler,必须手动安装 SDK 并配置开发环境。若主要用于学习或开发,建议切换至 Ubuntu WSL 以获得完整支持。

如需进一步帮助,请提供 dnf search SDL2echo $SKM_PATH 的输出结果。

怎么用dnf替代apt呢?