我在Ubuntu 18.04.5 LTS中下载了iasl 20190509版本。当我使用“make iasl”命令来构建包时,我得到了这个错误:
$ make iasl
make[1]: Entering directory 'acpica-unix2-20190509/generate/unix/iasl'
- bison obj/aslcompiler.y
acpica-unix2-20190509/generate/unix/iasl/obj/aslcompiler.y:1.1: error: syntax error, unexpected end of file
mv: cannot stat 'obj/AslCompiler.LLW4kB/y.tab.h': No such file or directory
Makefile:322: recipe for target 'obj/aslcompiler.y.h' failed
make[1]: *** [obj/aslcompiler.y.h] Error 1
make[1]: Leaving directory 'acpica-unix2-20190509/generate/unix/iasl'
generate/unix/Makefile.common:7: recipe for target 'iasl' failed
make: *** [iasl] Error 2
请帮助我修复此错误。
请帮助我建立iasl。
1条答案
按热度按时间bzzcjhmw1#
解决方案是重试
make
,但首先要确保构建目录是干净的:以下是我对所发生事情的最佳猜测:
1.尝试构建软件包。
1.该尝试失败,因为以前未安装
m4
工具。make
重新运行构建。1.由于所提供的
Makefile
存在不足,make
未尝试再次运行m4
。(请参见下文。)因此,对假定由m4
生成的文件的处理失败。这个软件包依赖于
m4
通过插入各种组件文件来创建bison
的源代码。(Yacc/野牛没有include
特性,所以m4
是常用的解决方案。)然而,运行m4
的命令大致如下(路径简化):当shell执行这个命令时,它甚至在试图调用
m4
之前就创建或截断aslcompiler.y
,如果结果是找不到m4
,或者m4
产生了某种错误,那么您将得到一个空的或部分的输出文件。make
目标aslcompiler.y
被这个假象所满足,因为make
只关心目标的创建晚于其依赖项,所以make
的下一个调用继续到下一个步骤(bison aslcompiler.y
),该步骤失败,因为aslcompiler.y
为空。Makefile
最好编写为使用如下命令:以避免在
m4
失败时创建目标。当然,这不是您的责任。它可能会作为bug报告给iASL项目。(Makefile
已经使用此策略来安全地处理野牛生成的文件,因此它实际上不是什么新东西。)