You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 22.04 WSL交叉编译SDL2至树莓派4 aarch64遇CMake错误

问题原因

你安装的SDL2是针对WSL Ubuntu(x86_64架构)的版本,因此库文件和配置文件都存放在/usr/lib/x86_64-linux-gnu路径下。交叉编译树莓派4(aarch64架构)程序时,CMake需要搜索适配ARM64架构的SDL2库,但默认的搜索路径指向主机(x86_64)的库目录,自然找不到对应的SDL2Config.cmake或sdl2-config.cmake。

解决方案

1. 安装官方aarch64架构SDL2开发包

Ubuntu仓库支持跨架构软件包安装,直接获取针对aarch64的SDL2开发包即可:

  • 添加aarch64架构支持:
    sudo dpkg --add-architecture arm64
    
  • 更新软件源:
    sudo apt update
    
  • 安装aarch64版本的SDL2开发包:
    sudo apt install libsdl2-dev:arm64
    

安装完成后,SDL2的库和配置文件会自动放到/usr/lib/aarch64-linux-gnu,CMake交叉编译时可自动识别。

同理,Vulkan也需要安装对应架构的开发包:

sudo apt install libvulkan-dev:arm64

2. 手动编译aarch64版本的SDL2(适用于官方包版本不符的场景)

  • 从SDL官方仓库下载源码
  • 创建交叉编译目录并进入:
    mkdir build-aarch64 && cd build-aarch64
    
  • 用aarch64工具链配置编译参数:
    ../configure --host=aarch64-linux-gnu --prefix=/usr/local/aarch64-linux-gnu
    
  • 编译并安装:
    make -j$(nproc) && sudo make install
    

之后在CMake配置时,指定SDL2的配置路径:

cmake -S . -B build-aarch64 -DCMAKE_TOOLCHAIN_FILE=toolchain.cmake -DSDL2_DIR=/usr/local/aarch64-linux-gnu/lib/cmake/SDL2

3. 配置CMake交叉编译工具链文件

创建toolchain-aarch64.cmake文件,强制CMake搜索aarch64架构的库路径:

set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR aarch64)

set(CMAKE_C_COMPILER aarch64-linux-gnu-gcc)
set(CMAKE_CXX_COMPILER aarch64-linux-gnu-g++)

# 指定aarch64库的根路径
set(CMAKE_FIND_ROOT_PATH /usr/aarch64-linux-gnu /usr/local/aarch64-linux-gnu)

# 限制搜索范围,只找目标架构的文件
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)

使用该工具链文件进行CMake配置:

cmake -S . -B build-aarch64 -DCMAKE_TOOLCHAIN_FILE=toolchain-aarch64.cmake

内容的提问来源于stack exchange,提问作者Ferry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 00:35:35