【问题标题】:"make: yacc: Command not found" after installing Bison安装 Bison 后出现“make:yacc:Command not found”
【发布时间】:2012-05-24 07:44:44
【问题描述】:

在 gcc 4.1.2 (linux 5) 中运行 makefile 时,出现以下错误

make: yacc: Command not found

通过谷歌搜索,我了解到这个错误可以通过安装 Bison-GNU 解析器生成器来纠正。 但即使在安装 Bison 之后,我也会遇到同样的错误。

如何解决这个错误?

【问题讨论】:

  • 你在什么操作系统下?听起来像一些 linux 发行版,但我不确定是哪个。此外,这个错误是不言自明的:当你运行 whereis yacc 时会发生什么?
  • whereis yacc的输出是yacc: /usr/share/man/man1p/yacc.1p.gz
  • 这是一个压缩手册页,不是可执行文件。
  • 这意味着您的 $PATH 不包括 yacc 可执行文件——这只是它的手册页。我建议尝试查找yacc 的位置,并找出为什么它不在您的$PATH 上。顺便说一句,这更像是一个 ServerFault 或 SuperUser 问题。

标签: bison yacc


【解决方案1】:

在终端上运行以下命令安装野牛, yacc 可执行文件和配置。yacc 与野牛一起提供

您还需要 byacc 以获得完整的功能 yacc

sudo apt-get install bison -y
sudo apt-get install byacc -y

它对我有用。

【讨论】:

  • Ubuntu 14.04 已安装 - 有野牛但没有 byacc。谢谢小费。 (赞成)。
【解决方案2】:

从外观上看,您的 makefile 期望有一个可用的 yacc 可执行文件,但它要么不可用,要么不在您的路径上。

由于bison 应该与yacc 兼容,所以我首先要尝试的是:

alias yacc="bison"

然后再试一次。在我的设置中,/usr/bin/yacc 只是一个包含以下内容的脚本:

#! /bin/sh
exec '/usr/bin/bison' -y "$@"

您可以尝试使用以下命令定位 yacc 或 bison 可执行文件(如果需要,用 bison 代替 yacc):

which yacc

但它们可能位于/bin 或/usr/bin 等标准位置之一。

【讨论】:

  • 我建议先看看bison 是否存在,但是是的,很高兴知道。
  • 是的,Bison 存在。 “which bison”命令的输出是“/usr/bin/bison”。但即使在给出“alias yacc="bison" 之后,我也会得到同样的错误。
  • 那么别名可能正在消失,或者它正在使用没有别名的shell。如果which yacc 没有找到有效的可执行文件,请按照答案中给出的行创建您自己的/usr/bin/yacc 可执行文件。如果 that 不起作用,那么您的 makefile 在运行时几乎肯定看不到/usr/bin。
  • 嗯,别名工作正常。 “which yaac”给出了“别名 yacc='bison'/usr/bin/bison”。该错误已得到解决。谢谢paxdibolo。
【解决方案3】:

我在 RHEL7 上遇到了类似的问题。

查找野牛在哪里:

$:which bison

*/bin/bison*

从 yacc 创建指向 bison 的符号链接:

sudo ln -s /bin/bison /bin/yacc

这应该可以解决问题。

【讨论】:

    【解决方案4】:

    我在我的 Ubuntu 16 系统上创建了别名文件,然后在测试时我发现 bison 丢失了,所以我安装了 bison,这给了我一个关于我为 /usr/bin/yacc 创建的链接的错误,所以 bison install 在 Ubuntu 16 上为 yacc 创建 lnk 文件。

    【讨论】:

      猜你喜欢
      • 2019-05-28
      • 2019-06-09
      • 1970-01-01
      • 1970-01-01
      • 2013-03-26
      • 2018-04-17
      • 1970-01-01
      • 2016-05-20
      • 1970-01-01
      相关资源
      最近更新 更多