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

Mac Mini M2编译Zephyr项目遇arm-zephyr-eabi-g++编译错误求助

解决Mac Mini M2上编译Zephyr项目时的-arch选项错误

问题根源

Mac M2属于arm64架构的macOS系统,CMake或系统默认会给编译器添加-arch arm64编译选项,但arm-zephyr-eabi-g++是针对嵌入式ARM平台的交叉编译器,不支持macOS的-arch参数,这才导致报错。你之前尝试的-march和CMAKE_SYSTEM_PROCESSOR设置未解决问题,是因为没从根源上移除这个不兼容的选项。

具体解决方法

方法1:在CMake中强制移除-arch选项

在项目顶层CMakeLists.txt中添加以下代码,直接从编译参数中剔除-arch相关内容:

# 移除C/CXX编译参数中的-arch选项
string(REPLACE "-arch arm64" "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
string(REPLACE "-arch arm64" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")

# 强制禁用CMake自动添加macOS架构选项
set(CMAKE_OSX_ARCHITECTURES "" CACHE STRING "Override macOS arch flags" FORCE)

方法2:通过环境变量临时屏蔽

编译前在终端执行以下命令,阻止CMake生成macOS架构相关参数:

export CMAKE_OSX_ARCHITECTURES=""
west build -b <你的目标板型号> <项目路径>

方法3:确认交叉编译器路径

检查当前使用的交叉编译器是否为Zephyr SDK自带版本,避免被系统编译器干扰:

which arm-zephyr-eabi-g++

确保输出路径指向Zephyr SDK的安装目录,而非系统默认的编译器路径。

验证

重新执行编译命令,查看输出日志中是否已无-arch arm64参数,若已移除则可正常编译。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 08:29:51