配置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基本就可以了。

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

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值