"make: yacc: Command not found" after installing Bison
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.
Blackforest
C/Pro*C analyst, port applications from Solaris to Linux.
Updated on April 21, 2020Comments
-
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 almost 12 yearsI would suggest seeing if
bison
exists first, but yes, good to know. -
Blackforest almost 12 yearsyes 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 almost 12 yearsThen 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 almost 12 yearsWell, the alias works fine. "which yaac" gives "alias yacc='bison' /usr/bin/bison". The error has been resolved. Thanks paxdibolo.
-
B. Shea over 8 yearsUbuntu 14.04 as installed - had bison but not byacc. Thanks for tip. (Upvoted).