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

CMake交叉编译armel平台项目时找不到nlohmann/json.hpp头文件如何解决

错误产生原因
  • 交叉编译器的搜索路径隔离:你使用的arm-linux-gnueabi-g++-10是针对armel架构的交叉编译器,为了避免和宿主机x86架构的依赖混淆,默认只会扫描自身对应架构的sysroot下的头文件目录,不会主动读取宿主机的/usr/local/include路径。你将nlohmann库安装到了宿主机的全局头文件目录,交叉编译器无法识别该路径下的文件。
  • CMake配置缺少头文件声明:你当前的CMakeLists.txt中没有显式指定额外的头文件搜索路径,即使依赖放在自定义路径下,编译器也无法完成定位。
解决方案

方案一:临时指定头文件路径(适用于单项目快速验证)

直接在CMakeLists.txt的add_executable配置前新增头文件搜索路径声明,明确让编译器去/usr/local/include找nlohmann的头文件:

# 新增如下配置行
include_directories(/usr/local/include)

add_executable(${PROJECT_NAME} ${SRC_FILES})

修改完成后删除之前生成的CMake缓存文件(CMakeCache.txt和CMakeFiles目录),重新执行cmake、make命令即可完成编译。

方案二:将依赖安装到交叉编译器sysroot(适用于长期多项目交叉编译场景)

首先查询交叉编译器对应的sysroot路径:

arm-linux-gnueabi-g++-10 -print-sysroot

假设输出路径为/usr/arm-linux-gnueabi,将nlohmann头文件目录拷贝到该路径下的include目录即可:

sudo cp -r /usr/local/include/nlohmann /usr/arm-linux-gnueabi/include/

该方案不需要修改CMakeLists.txt配置,交叉编译器会默认扫描sysroot下的头文件目录,适合多个armel编译项目共用nlohmann依赖的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 01:24:03