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
相关产品推荐
相关产品推荐

