Linux:编译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一名“资深副教授”的说法,搭环境应该是分分钟的事(信?你就输了),所以老师的话告诉我,我这搭了半小时肯定是走了弯路啊~

猜你喜欢

转载自blog.csdn.net/wch0lalala/article/details/105370314
今日推荐