macOS Monterey(M1)构建AOSP 12时Host out二进制文件缺失问题
官方不支持导致的条件编译过滤
AOSP官方未对macOS提供支持,大量host工具的编译规则会通过HOST_OS这类变量做平台判断,只在Linux环境下编译部分工具(比如host_init_verifier)。macOS的构建配置中直接排除了这些目标,自然不会生成对应的可执行文件。M1架构转译的适配缺陷
你在M1(arm64)芯片上通过Rosetta转译构建darwin-x86目标,部分工具的编译脚本在转译环境下存在适配问题——比如依赖的底层库无法正常链接、编译选项不兼容,构建系统会自动跳过这些工具的编译。而Linux x86环境是原生架构,不存在这类兼容障碍,所以能完整编译所有host工具。构建缓存与增量编译的影响
两台机器的构建缓存是独立的,macOS上如果之前的构建过程中出现过未中断镜像生成的小错误(比如某依赖缺失),增量编译会直接跳过这些有问题的host工具。建议在macOS上执行make clean后从头完整构建,验证是否能生成缺失文件。依赖工具版本的平台差异
macOS和Linux的构建依赖工具(如clang、make、python)版本或特性不同:比如部分host工具依赖Linux特有的glibc功能,macOS的libc无法提供;或者macOS自带的clang不支持某些编译参数,导致这些工具编译失败并被跳过。dist目标的平台依赖配置不同
make dist的依赖列表在不同平台下有区别,Linux下的dist目标依赖了全部必要的host工具,而macOS的dist配置因官方不支持未做适配,即使镜像能正常生成,缺失的工具也会导致dist流程失败。
内容的提问来源于stack exchange,提问作者artem

