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

树莓派Pico(RP2040)CMake命令行编译汇编错误求助

树莓派Pico(RP2040)命令行编译汇编指令兼容问题解决方法

问题场景

  • 操作环境:纯命令行开发树莓派Pico(RP2040),已安装官方SDK,编写了板载LED闪烁代码
  • 项目CMakeLists.txt内容:
cmake_minimum_required(VERSION 3.13)

include(pico_sdk_import.cmake)

project(blink C CXX ASM)
set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 17)
pico_sdk_init()

add_executable(blink blink.c)

pico_add_extra_outputs(blink)

target_link_libraries(blink pico_stdlib)
  • 编译异常:cmake ..执行无报错,但运行make -j4时出现大量汇编错误,核心表现为汇编器无法识别.syntax、.cpu等ARM伪指令及ldr、bics等ARM指令,错误示例:
[  1%] Building ASM object pico-sdk/src/rp2040/boot_stage2/CMakeFiles/bs2_default.dir/compile_time_choice.S.o
/home/mastermind/pico/pico-sdk/src/rp2040/boot_stage2/boot2_w25q080.S: Assembler messages:
/home/mastermind/pico/pico-sdk/src/rp2040/boot_stage2/boot2_w25q080.S:13: Error: unknown pseudo-op: `.syntax'
/home/mastermind/pico/pico-sdk/src/rp2040/boot_stage2/boot2_w25q080.S:89:  Info: macro invoked from here
/home/mastermind/pico/pico-sdk/src/rp2040/boot_stage2/boot2_w25q080.S:14: Error: unknown pseudo-op: `.cpu'
...
make: *** [Makefile:91: all] Error 2

核心原因

当前调用的是主机x86架构的汇编器(如系统默认的as),而非ARM Cortex-M0+(RP2040核心架构)的交叉汇编器,无法识别ARM指令集语法。

解决步骤

1. 安装ARM交叉编译工具链

针对RP2040的Cortex-M0+架构,安装专用交叉编译工具链。以Ubuntu/Debian系统为例:

sudo apt update && sudo apt install gcc-arm-none-eabi

验证安装是否成功:

arm-none-eabi-as --version

输出需包含arm-none-eabi标识。

2. 配置CMake使用交叉编译工具链

方式一:命令行临时指定

执行cmake时直接指定交叉编译工具:

cmake .. -DCMAKE_C_COMPILER=arm-none-eabi-gcc -DCMAKE_ASM_COMPILER=arm-none-eabi-as

方式二:创建工具链配置文件(长期推荐)

在项目根目录创建arm-none-eabi-toolchain.cmake,内容如下:

set(CMAKE_SYSTEM_NAME Generic)
set(CMAKE_SYSTEM_PROCESSOR arm)

set(CMAKE_C_COMPILER arm-none-eabi-gcc)
set(CMAKE_ASM_COMPILER arm-none-eabi-as)
set(CMAKE_CXX_COMPILER arm-none-eabi-g++)

set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

之后执行cmake时指定工具链文件:

cmake .. -DCMAKE_TOOLCHAIN_FILE=arm-none-eabi-toolchain.cmake

3. 重新编译

清理旧构建文件后重新编译:

rm -rf build && mkdir build && cd build
# 执行上述任意一种cmake配置命令
make -j4

更优处理方案

  • 配置环境变量简化操作:
export PICO_TOOLCHAIN_PATH=/usr/bin/arm-none-eabi-

(路径根据工具链实际安装位置调整)

  • 使用官方脚本一键配置:
git clone https://github.com/raspberrypi/pico-setup.git
cd pico-setup
./pico-setup.sh

脚本会自动安装依赖、SDK、工具链等,减少手动配置出错概率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 13:22:12