如何在树莓派4的QNX SDP8上构建aarch64le版本的SDL2库?
构建适用于QNX SDP8(树莓派4 aarch64le)的SDL2库
我需要将旧程序移植到树莓派4上新发布的QNX SDP8系统,为此必须构建适配aarch64le架构的SDL2库。仅需EGL/OpenGLES2+功能正常,不需要音频相关功能。
我已经尝试了三种构建方法均失败,但不想纠结具体错误信息的修复——核心问题是不清楚SDL针对该环境的正确配置方式,也不想通过强制链接库文件的方式“解决”构建问题,避免后续运行时出现更严重的故障。恳请有相关构建经验的人分享可用的仓库、配置选项等信息。
方法A:用CMake构建QNX Ports仓库中的SDL
- 克隆仓库并切换到release-2.30.x分支
- 执行CMake配置:
mkdir build_qnx_rpi4 cd build_qnx_rpi4 source ~/qnx800/qnxsdp_env.sh cmake .. \ -DCMAKE_SYSTEM_NAME=QNX \ -DCMAKE_SYSROOT=$QNX_TARGET/aarch64le/usr \ -DCMAKE_C_COMPILER=$QNX_HOST/usr/bin/qcc \ -DCMAKE_CXX_COMPILER=$QNX_HOST/usr/bin/qcc \ -DCMAKE_C_FLAGS="-Vgcc_ntoaarch64le" \ -DCMAKE_BUILD_TYPE=Release \ -DSDL_AUDIO_DRIVER_JACK=OFF \ -DSDL_AUDIO_DRIVER_PIPEWIRE=OFF \ -DSDL_AUDIO_DRIVER_PULSEAUDIO=OFF \ -DSDL_AUDIO_DRIVER_SNDIO=OFF \ -DSDL_AUDIO_DRIVER_ALSA=OFF \ -DSDL_AUDIO=OFF \ -DVIDEO_WAYLAND=OFF
- 执行构建:
cmake --build . --verbose -- -j4
构建失败,链接阶段提示找不到-lpthread。
方法B:用configure脚本构建QNX Ports仓库中的SDL
- 克隆仓库并切换到release-2.30.x分支
- 执行configure配置:
./configure \ --host=aarch64-unknown-nto-qnx8.0.0 \ --prefix=$QNX_TARGET/usr \ CFLAGS="-Vgcc_ntoaarch64le" \ CXXFLAGS="-Vgcc_ntoaarch64le" \ LTCFLAGS="-Vgcc_ntoaarch64le --sysroot=$QNX_TARGET -I$QNX_TARGET" \ CC=qcc \ CXX=qcc \ --disable-shared \ --disable-pulseaudio \ --disable-alsa \ --disable-sndio \ --disable-pipewire \ --disable-jack \ --disable-video-wayland \ --disable-audio
- 执行构建:
make
编译阶段通过后失败,提示无法同时指定-c/-o和多个文件,排查发现是SDL.lo被重复指定。手动调整libtool命令可成功编译单个文件,但无法生成所需的.a和.so文件。
方法C:使用SDL主仓库
SDL2理论上已修复QNX构建问题,但我找不到能成功构建的SDL2版本。我可以为Raspbian构建多个SDL2版本,也能为QNX构建至少一个SDL3版本,但SDL2在QNX环境下始终无法编译。
内容的提问来源于stack exchange,提问作者ludagad
相关产品推荐
相关产品推荐

