4

所以我正在关注Linux From Scratch这本书,并且在第5.17 Bison-3.0.4章中。

这本书指导我们做一个make check之后来make测试编译的 Bison 包的结果。

最初,我收到以下错误:

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

ok这解决了问题,除了以下三项检查外,所有检查都变为绿色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 上搜索,但一无所获。

有任何想法吗?

4

1 回答 1

8

这是常见的错误。如第 4.6 章所述。关于测试套件

经验表明,运行第 5 章中的测试套件几乎没有什么收获。无法回避的事实是,主机系统总是对该章中的测试施加一些影响,经常导致莫名其妙的故障。因为第 5 章中构建的工具是临时的并且最终被丢弃,所以我们不建议普通读者运行第 5 章中的测试套件。 运行这些测试套件的说明是为了测试人员和开发人员的利益而提供的,但它们是严格可选的。

解决方案很简单——不要对第 5 章中编译的包运行测试。它们会失败,这没有任何意义。当你构建你的真实系统时,测试在第 6 章中很重要。

于 2018-01-14T05:18:56.657 回答