Linux From Scratch中Bison-3.0.4 'make check'出现错误

4

我正在按照《Linux From Scratch》这本书的指导,现在在第 5.17 节 Bison-3.0.4

书中要求我们在使用make编译 Bison 包后进行make check测试。

最初,我遇到了以下错误:

make[3]: Entering directory `/sources/bison-3.0'
  LEX      examples/calc++/calc++-scanner.cc
  CXX      
examples/calc++/examples_calc___calc__-calc++-scanner.o
g++: error: ./examples/calc++/calc++-scanner.cc: No such file or directory
g++: fatal error: no input files
compilation terminated.
make[3]: *** 
[examples/calc++/examples_calc___calc__-calc++-scanner.o] Error 1
make[3]: Leaving directory `/sources/bison-3.0'
make[2]: *** [check-am] Error 2
make[2]: Leaving directory `/sources/bison-3.0'
make[1]: *** [check-recursive] Error 1
make[1]: Leaving directory `/sources/bison-3.0'
make: *** [check] Error 2

但我在这个网站上找到了一个解决方案。它告诉我在执行make check之前执行以下操作:

cp Makefile Makefile.bak
sed -i '/calc++/d' Makefile
make check

这解决了问题,所有的检查都通过了,除了以下三个FAILED检查:

430: Variants lalr1.cc parse.assert api.token.constructor FAILED (c++.at:374)
431: Variants lalr1.cc parse.assert api.token.constructor api.token.prefix={TOK_} FAILED (c++.at:375)
432: Variants lalr1.cc parse.assert api.token.constructor api.token.prefix={TOK_} %locations FAILED (c++.at:376)

我尝试在Google上搜索,但没有结果。
有什么想法吗?

请阅读网站指南,您需要提供一个最小但完整的示例。此外,在为您的问题打标签之前,请确保该标签实际适用。 - Ulrich Eckhardt
1
@UlrichEckhardt - 我提供的书籍就是一个例子。不幸的是,我无法将整本书都打出来,因为那会太长了。这就是为什么我提供了链接的原因。这个问题是针对那些熟悉Linux From Scratch的人的。这就是为什么我使用了lfs标签。这已经是我能够得到的最具体的信息了。 - UndercoverCoder
1
我并不是想要表现得粗鲁。然而,首先,从主题中移除标签,因为它们会使主题变得不必要地臃肿。然后,阅读“linux”标签的描述:这里没有任何特定于Linux的内容,它也可能出现在任何其他系统上。另一方面,我有点猜测,因为您没有提供一个最小示例,这才是真正缺失的部分。拿出代码并提取一个例子,这可以确保所有必要的信息但没有多余的信息。将链接放出去并要求其他人在那里查找相关信息只会使您的问题违反SO规则,所以请不要这样做。 - Ulrich Eckhardt
2
你引用的信息似乎表明缺少一个软件包。你是否按照后续步骤中详细说明的安装了 flex - jww
2
@UlrichEckhardt 我认为你误解了问题的意思。原帖并没有写任何代码,因此没有什么可以发布一个最小示例。原帖作者正在尝试从头构建一个Linux系统,并且作为其中的一部分正在编译bison,在“make check”阶段显然失败了。 - sepp2k
显示剩余4条评论
1个回答

8
这是一个常见的错误。如第4.6章测试套件中所述:
经验表明,在第5章中运行测试套件几乎没有什么收益。无法摆脱的事实是,主机系统总会对该章节中的测试产生一些影响,往往导致无法解释的失败。因为第5章中构建的工具是临时的并最终被丢弃的,我们不建议普通读者运行第5章中的测试套件。提供运行这些测试套件的说明有利于测试人员和开发人员,但是它们是可选的。 解决方法很简单-不要运行在第5章编译的包的测试。它们将失败,这没有任何意义。在第6章构建真正的系统时,测试非常重要。

谢谢您的回答:)我刚意识到第五章中并不需要测试。 - UndercoverCoder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接