研究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基本就可以了。
以上只是部分问题的总结,如果没有涉及到的问题,可以探讨。