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

