为嵌入式Linux ARM处理器交叉编译OpenSceneGraph遇CMake错误求助
编译OpenSceneGraph 3.6.5 for ARM嵌入式Linux的CMake错误修复
针对你遇到的三个编译错误,可在CMakeLists.txt中添加以下内容逐一解决:
1. 解决cstdlib: No such file or directory错误
CMake未正确识别交叉编译环境下的C++标准库路径,需指定sysroot并添加标准库包含路径:
# 设置交叉编译的sysroot路径 set(CMAKE_SYSROOT "/opt/arago/sysroots/aarch64-linux") # 添加C++标准库的头文件路径 include_directories(SYSTEM "${CMAKE_SYSROOT}/usr/include/c++/9.2.1") include_directories(SYSTEM "${CMAKE_SYSROOT}/usr/include/c++/9.2.1/aarch64-linux")
注:
SYSTEM关键字用于将路径标记为系统头文件,避免不必要的编译警告。
2. 解决atomic.h: No such file or directory错误
该错误源于TBB库的头文件未被CMake识别,添加TBB的包含路径即可:
# 添加TBB库的头文件路径 include_directories(SYSTEM "${CMAKE_SYSROOT}/usr/include/tbb")
若你的项目无需依赖TBB,也可直接禁用OSG对TBB的支持:
set(OSG_USE_TBB OFF CACHE BOOL "Disable TBB support")
3. 解决windows.h: No such file or directory错误
CMake误将目标系统识别为Windows,需明确指定目标系统为Linux,并强制OSG使用嵌入式Linux适配的窗口系统:
# 明确指定目标操作系统为Linux set(CMAKE_SYSTEM_NAME Linux) # 强制OSG使用X11窗口系统(适配嵌入式Linux环境) set(OSG_WINDOWING_SYSTEM "X11" CACHE STRING "Force X11 windowing system for embedded Linux")
内容的提问来源于stack exchange,提问作者enthu
相关产品推荐
相关产品推荐

