编译flex、bison总结
这个做了很久了,一直没总结,今天以Ubuntu18.04为例,总结一下步骤,没有太多原理性的东西,希望能帮到编译flex、bison程序时出错的小伙伴们。
先解释下,lex与yacc是两个在Unix下的分别作词法分析和语法分析的工具,Linux对应flex与bison。
step1、安装bison
首先安装bison(因为它没有那么多的依赖包),由于即使更换成国内源,有些时候Ubuntu的下载网速大家也是了解的,为了尽量避免卡在apt-get install
阶段,在此我们利用打包好的bison进行安装:
下载地址:bison
tar -zxvf bison-3.5.tar.gz
cd bison-3.5
./configure
make
make install
按理说不会出现什么错误,反正我安装过三台机器都没出问题。
step2、安装flex
重点:这个flex是真的很讨厌,很多的依赖包:m4、autoconf、automake、libtool、gettext
,最好是先一股脑地下载好,等出了错就安装对应的依赖包就好了。这些都是压缩包安装,下载最新版本的tar.gz
压缩包就好了,想下其他随便改了解压命令的事。下载地址:Index of GUN。
命令都是:
tar -zxvf *.tar.gz
cd *
./congifure
make
make install
现在来安装flex:
第一种方式:
最简单的方式必然是:
sudo apt-get install flex
flex --version #查看flex版本
但是还是网速问题,有的时候还不如手动配置呢,于是有了方法2。
第二种方式:
1、刚开始我在上述连接中没有搜到flex,当然如果你们能搜到flex,可以按照上述方式直接安装。
于是我去github搜了它的源码flex-master.zip
,地址:flex-github。
unzip flex-master.zip
cd flex-master
./autogen.sh
## 这时候会生成一个configure的可执行文件,如果没有就回过头看上述依赖包有没有都安装好
./configure
make
2、问题来了,又缺少依赖包!!
flex-master/build-aux/missing: line 81: makeinfo: command not found
WARNING: 'makeinfo' is missing on your system.
那我们安装makeinfo就是了,我用熟悉的apt-get进行安装,毕竟Index of GNU链接中也根本没有makeinfo:
sudo apt-get install makeinfo
//一定会出现以下错误
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package makeinfo
因为根本没有这个包!我查阅很多资料,发现这其实是一个叫做texinfo的依赖包:这里
sudo apt-get install texinfo
或者Index of GNU链接里有,安装方式与m4、autoconf等相同。安装好了之后又继续make
,成功了。
3、但是make install
出现了错误:
../build-aux/missing: 81: ../build-aux/missing: help2man: not found
WARNING: 'help2man' is missing on your system.
这个好解决,apt-get install
的方式或者从Index of GNU下载手动安装help2man
均可。
END
据某知名211一名“资深副教授”的说法,搭环境应该是分分钟的事(信?你就输了),所以老师的话告诉我,我这搭了半小时肯定是走了弯路啊~