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

AOSP编译报错:POSIX Yacc不支持%name-prefix等指令求助

解决AOSP编译时POSIX Yacc不支持旧指令的报错

方案一:修改yacc文件适配POSIX标准

直接修改报错文件 external/iproute2/tc/emp_ematch.y,替换废弃/不兼容的指令:

  • 删除或注释第10行的 %token-table(POSIX Yacc不支持该指令)
  • 将第11行的 %error-verbose 替换为 %define parse.error verbose
  • 将第12行的 %name-prefix "ematch_" 替换为 %define api.prefix {ematch_}

修改完成后重新执行编译命令即可。

方案二:强制使用Bison编译

这些报错指令属于GNU Bison的扩展特性,直接指定用Bison替代POSIX Yacc编译:
在AOSP编译时添加变量指定:

make YACC=bison

或者先设置环境变量再编译:

export YACC=bison
m

报错原因

当前编译环境使用的是POSIX标准Yacc,而external/iproute2/tc/emp_ematch.y中使用了GNU Bison专属的扩展指令,这些指令不符合POSIX规范,被编译器判定为错误并终止构建。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 14:33:10