"make: yacc: Command not found" after installing Bison

51,713

Solution 1

From the looks of things, your makefile is expecting a yacc executable to be available and either it's not, or it's not on your path.

Since bison is supposed to be compatible with yacc so the first thing I would try would be:

alias yacc="bison"

and try again. On my setup, /usr/bin/yacc is simply a script containing:

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

You can try to locate the yacc or bison executables with the command (substituting bison for yacc if need be):

which yacc

But they're probably in one of the standard places like /bin or /usr/bin.

Solution 2

Run the following command on your terminal to install bison, yacc executables and configurations.yacc comes along with bison

Also you need byacc for a full functional yacc

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

It worked for me.

Solution 3

I ran into a similar issue on RHEL7.

Find where bison is:

$:which bison

*/bin/bison*

Create symlink to bison from yacc:

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

And that should solve the problem.

Share:
51,713
Blackforest
Author by

Blackforest

C/Pro*C analyst, port applications from Solaris to Linux.

Updated on April 21, 2020

Comments

  • Blackforest
    Blackforest about 4 years

    While running a makefile in gcc 4.1.2 (linux 5), I got the following error

    make: yacc: Command not found
    

    By googling, I came to know that this error can be rectified by installing Bison-GNU parser generator. But even after installing Bison, I get the same error.

    How can this error be solved?

  • zebediah49
    zebediah49 almost 12 years
    I would suggest seeing if bison exists first, but yes, good to know.
  • Blackforest
    Blackforest almost 12 years
    yes Bison exists. The output of "which bison" command is "/usr/bin/bison". But even after giving "alias yacc="bison", I get the same error.
  • paxdiablo
    paxdiablo almost 12 years
    Then the alias is probably disappearing, or it's using a shell that doesn't have aliases. If which yacc does not turn up a valid executable, create your own /usr/bin/yacc executable along the lines of the one given in the answer. If that doesn't work then your makefile is almost certainly not seeing /usr/bin when it's running.
  • Blackforest
    Blackforest almost 12 years
    Well, the alias works fine. "which yaac" gives "alias yacc='bison' /usr/bin/bison". The error has been resolved. Thanks paxdibolo.
  • B. Shea
    B. Shea over 8 years
    Ubuntu 14.04 as installed - had bison but not byacc. Thanks for tip. (Upvoted).