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

如何为STM32-F767ZI ARM处理器交叉编译libbson库

报错原因排查
  • 核心问题出在参数使用错误:CMAKE_TOOLCHAIN_FILE需要传入的是CMake格式的工具链配置文本文件,你错误传入了arm-none-eabi-gcc编译器二进制可执行文件。CMake尝试将二进制文件当做脚本解析时,读取到ELF二进制头标识就触发了语法报错。
正确libbson交叉编译配置方案

步骤1:编写ARM交叉编译工具链配置文件

在libbson源码根目录下新建arm-stm32-toolchain.cmake文件,写入如下内容,可根据你使用的STM32内核型号调整对应编译参数:

set(CMAKE_SYSTEM_NAME Generic)
set(CMAKE_SYSTEM_PROCESSOR arm)

# 替换为你的arm-none-eabi-gcc实际安装路径
set(TOOLCHAIN_PATH ~/arm_compiler/gcc-arm-none-eabi-10.3-2021.07)
set(CMAKE_C_COMPILER ${TOOLCHAIN_PATH}/bin/arm-none-eabi-gcc)
set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PATH}/bin/arm-none-eabi-g++)

# 针对STM32的编译参数,以下为Cortex-M4带FPU的示例,可根据实际内核修改
set(CMAKE_C_FLAGS "-mcpu=cortex-m4 -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 -specs=nano.specs" CACHE INTERNAL "")
set(CMAKE_CXX_FLAGS ${CMAKE_C_FLAGS} CACHE INTERNAL "")

set(CMAKE_FIND_ROOT_PATH ${TOOLCHAIN_PATH})
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

步骤2:执行编译命令

进入源码的build目录下执行以下命令:

cmake -DENABLE_MONGOC=OFF -DCMAKE_TOOLCHAIN_FILE=../arm-stm32-toolchain.cmake -DCMAKE_INSTALL_PREFIX=./bson_output ..
make -j$(nproc)
make install

编译完成后,生成的头文件、静态库都会输出到build/bson_output目录下,直接导入STM32CubeIDE工程即可使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 11:06:04