Ubuntu上调用命令make config配置linux 内核时报错/bin/sh: 1: flex: not found,需要安装flex,同时也查了下flex是什么,怎么用。

Ubuntu安装Flex

sudo apt-get install flex

就可安装成功

Flex是什么

flex是一个生成词法扫描器的工具,运行流程如下图:

 规则文件的格式是:

definitions
%%
rules
%%
user code

definitions是可选的,rules和user code是必须的。

rules的规则是一条正则表达式对于一个ACTION:

ERE ACTION.

ERE表示扩展正则表达式,ACTION表示用户希望当遇到匹配这条正则表达式的文本时所执行的C语言操作。

user code有固定的格式,要带有main函数和yywrap函数

Flex怎么用

举个简单的例子,下面生成一个example.l的规则文件:

%%
username printf("%s", getlogin());
%%
int main(int argc, char* argv[])
{
 yylex();
 return 0;
}

//yywarp规定有的
int yywrap(){
return 1;
}

rules部分是

username printf("%s", getlogin());

表示当在文本中匹配到username时,就打印当前系统的用户名来替换掉username.我们使用flex命令:

flex example.l

当前目录下会生成一个lex.yy.c的c语言文件。我们用gcc编译它,生成可执行文件test:

gcc -o test lex.yy.c

我们现在再生成一个测试文件file,内容如下:

eden_ubuntu@edenubuntu:~/Documents/Project/TestCode/flex$ cat file
username 1
username 2

使用命令:

./test < file

 结果如下:

eden_ubuntu@edenubuntu:~/Documents/Project/TestCode/flex$ ./test < file
eden_ubuntu 1
eden_ubuntu 2

username都被替换成了系统登录名eden_ubuntu。

当然我们这里的规则文件很简单,实际上可以根据需要生成很复杂的规则文件来完成复杂的匹配任务,这里我们只是让大家有一个大概的认识,就不深入讨论了

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐