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

Windows下使用b2交叉编译Boost到ARM平台报错求助

解决Windows下Boost交叉编译ARM平台的"arm in arm is not a number"错误

问题根因

错误提示“arm in arm is not a number”是因为Boost.Build解析user-config.jam时,误将你配置里的arm当作编译器版本号,试图把它转成数字格式导致失败——using gcc的语法里第二个参数是版本号,不是别名。

修复方案

1. 修正user-config.jam配置(推荐)

把配置里的版本号位置留空,或者填入交叉编译器的实际版本号(可通过arm-linux-gnueabi-g++ -v查看):

# 写法1:留空版本号,直接指定编译器
using gcc : : arm-linux-gnueabi-g++ ;

# 写法2:填入真实版本号(比如从编译输出来的4.9、7.5等)
using gcc : 7.5 : arm-linux-gnueabi-g++ ;

然后执行编译命令:

b2 toolset=gcc target-os=linux address-model=32

(加address-model=32是明确告诉Boost目标是32位ARM,避免架构识别混乱)

2. 正确使用工具集别名

如果你需要用arm作为工具集别名区分不同编译器,调整命令的写法,让Boost正确识别别名而非版本号:
保持你的user-config.jam不变:

using gcc : arm : arm-linux-gnueabi-g++ ;

执行b2时用完整的工具集标识:

b2 toolset=gcc-arm target-os=linux address-model=32

3. 规避PATH问题,直接指定编译器路径

如果怀疑PATH配置有隐性问题,在user-config.jam里写编译器的绝对路径(Windows路径注意用正斜杠或双反斜杠):

using gcc : : C:/DS-5/compiler/bin/arm-linux-gnueabi-g++.exe ;

再执行b2 toolset=gcc target-os=linux即可。

额外验证步骤

  • 先单独跑arm-linux-gnueabi-g++ -v,确认编译器在当前终端能正常调用
  • 确保已经执行过bootstrap.bat生成b2工具
  • 建议在MSYS2/MinGW终端里编译,比原生CMD更少环境变量问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 17:12:42