配置linux内核执行make menuconfig时的若干问题

      研究linux内核是一个采坑不断的过程。从配置内核就会遇到各种问题。对于初学者可能就是束手无策了,大大影响学习的积极性以及学习进度。下面对一些常见的问题进行解释。

      首先,要配置内核,就需要先下载一个内核版本。可以从官网上下载,http://www.kernel.org,解压之后,进入到内核的目录下。比如我的目录是/home/fxfreefly/Documents/kernel_test/linux-5.4.13。在这个目录下可以执行相应命令。其中make menuconfig命令是比较常用的命令,主要是用来配置内核的。

      在执行make menuconfig命令时,可能会出现执行失败的情况,下面是一些常见的问题:

1、内核版本过低

      执行make menuconfig命令时,出现如下提示:

Makefile:444: *** mixed implicit and normal rules: deprecated syntax
Makefile:1609: *** mixed implicit and normal rules: deprecated syntax
make: *** No rule to make target 'menuconfig'.  Stop.

出现这个问题的原因是,用户的系统的make工具太新,内核make的旧版规则已经无法兼容新版。

首先我们按照提示信息,打开Makefile,翻到444行,代码如下:

config %config: scripts_basic outputmakefile FORCE

将这行修改为:

%config: scripts_basic outputmakefile FORCE

然后,我们再来看1609行,在这一行上,代码如下:

/  %/: prepare scripts FORCE

将其修改为:

%/: prepare scripts FORCE

修改完这两处,再执行make menuconfig基本就可以了。

2、缺少相应库

执行make menuconfig命令时,出现如下提示:

scripts/kconfig/Makefile:208: recipe for target 'scripts/kconfig/mconf-cfg' failed

这个提示没看明白是怎么回事,后来网上查了一下,发现是缺少libncurses5-dev库造成的。由于执行make menuconfig,需要显示一些彩色字符,需要依赖相应的库。执行下面的命令可以解决这个问题。

sudo apt-get install libncurses5-dev

3、缺少生成词法分析器的工具

      执行make menuconfig命令时,出现如下提示:  

/bin/sh: 1: bison: not found

或者提示:

/bin/sh: 1: flex: not found

经过研究发现bison和flex是生成词法分析器的工具。显然Makefile找不到相应的文件。按照提示执行下面的命令进行安装

sudo apt-get install bison
sudo apt-get install flex

成功按照之后,再执行make menuconfig基本就可以了。

以上只是部分问题的总结,如果没有涉及到的问题,可以探讨。

 

你可能感兴趣的:(linux操作系统,配置内核,make,menuconfig,bison,flex,deprecated,syntax,libncurses5-dev)