Linux字符设备驱动
+ -

make menuconfig出现错误的解决方法

2024-04-20 24 0

新装的Ubuntu在执行menuconfig时,会出现一系统的问题。
这是因为我们的系统中没有安装相应的工具导致,我们只需要安装提示,安装相应的工具​就行了。看到什么安装什么,直到最终的成功。

Unable to find the ncurses package

usbzh@usbzh-pc:~/work/linuxsrc/linux-5.4.1$ make menuconfig
  HOSTCC  scripts/basic/fixdep
*
* Unable to find the ncurses package.
* Install ncurses (ncurses-devel or libncurses-dev
* depending on your distribution).
*
make[1]: *** [scripts/kconfig/Makefile:208:scripts/kconfig/mconf-cfg] 错误 1
make: *** [Makefile:567:menuconfig] 错误 2

这是因为没有安装ncurses。

usbzh@usbzh-pc:~/work/linuxsrc/linux-5.4.1$ sudo apt-get install libncurses5-dev
[sudo] usbzh 的密码: 
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
将会同时安装下列软件:
  libncurses-dev libncurses6 libncursesw6 libtinfo6
建议安装:
  ncurses-doc
下列【新】软件包将被安装:
  libncurses-dev libncurses5-dev
下列软件包将被升级:
  libncurses6 libncursesw6 libtinfo6
升级了 3 个软件包,新安装了 2 个软件包,要卸载 0 个软件包,有 620 个软件包未被升级。
需要下载 341 kB/662 kB 的归档。
解压缩后会消耗 2,404 kB 的额外空间。
您希望继续执行吗? [Y/n] y
获取:1 http://mirrors.aliyun.com/ubuntu focal-updates/main amd64 libncurses-dev amd64 6.2-0ubuntu2.1 [340 kB]
获取:2 http://mirrors.aliyun.com/ubuntu focal-updates/main amd64 libncurses5-dev amd64 6.2-0ubuntu2.1 [984 B]
已下载 341 kB,耗时 0秒 (1,236 kB/s)    
(正在读取数据库 ... 系统当前共安装有 152056 个文件和目录。)
准备解压 .../libncursesw6_6.2-0ubuntu2.1_amd64.deb  ...
正在解压 libncursesw6:amd64 (6.2-0ubuntu2.1) 并覆盖 (6.2-0ubuntu2) ...
准备解压 .../libncurses6_6.2-0ubuntu2.1_amd64.deb  ...
正在解压 libncurses6:amd64 (6.2-0ubuntu2.1) 并覆盖 (6.2-0ubuntu2) ...
准备解压 .../libtinfo6_6.2-0ubuntu2.1_amd64.deb  ...
正在解压 libtinfo6:amd64 (6.2-0ubuntu2.1) 并覆盖 (6.2-0ubuntu2) ...
正在设置 libtinfo6:amd64 (6.2-0ubuntu2.1) ...
正在选中未选择的软件包 libncurses-dev:amd64。
(正在读取数据库 ... 系统当前共安装有 152056 个文件和目录。)
准备解压 .../libncurses-dev_6.2-0ubuntu2.1_amd64.deb  ...
正在解压 libncurses-dev:amd64 (6.2-0ubuntu2.1) ...
正在选中未选择的软件包 libncurses5-dev:amd64。
准备解压 .../libncurses5-dev_6.2-0ubuntu2.1_amd64.deb  ...
正在解压 libncurses5-dev:amd64 (6.2-0ubuntu2.1) ...
正在设置 libncurses6:amd64 (6.2-0ubuntu2.1) ...
正在设置 libncursesw6:amd64 (6.2-0ubuntu2.1) ...
正在设置 libncurses-dev:amd64 (6.2-0ubuntu2.1) ...
正在设置 libncurses5-dev:amd64 (6.2-0ubuntu2.1) ...
正在处理用于 man-db (2.9.1-1) 的触发器 ...
正在处理用于 libc-bin (2.31-0ubuntu9) 的触发器 ...

/bin/sh: 1: flex: not found

usbzh@usbzh-pc:~/work/linuxsrc/linux-5.4.1$ make menuconfig
  UPD     scripts/kconfig/mconf-cfg
  HOSTCC  scripts/kconfig/mconf.o
  HOSTCC  scripts/kconfig/lxdialog/checklist.o
  HOSTCC  scripts/kconfig/lxdialog/inputbox.o
  HOSTCC  scripts/kconfig/lxdialog/menubox.o
  HOSTCC  scripts/kconfig/lxdialog/textbox.o
  HOSTCC  scripts/kconfig/lxdialog/util.o
  HOSTCC  scripts/kconfig/lxdialog/yesno.o
  HOSTCC  scripts/kconfig/confdata.o
  HOSTCC  scripts/kconfig/expr.o
  LEX     scripts/kconfig/lexer.lex.c
/bin/sh: 1: flex: not found
make[1]: *** [scripts/Makefile.host:9:scripts/kconfig/lexer.lex.c] 错误 127
make: *** [Makefile:567:menuconfig] 错误 2

安装flex

usbzh@usbzh-pc:~/work/linuxsrc/linux-5.4.1$ sudo apt-get install flex
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
将会同时安装下列软件:
  libfl-dev libfl2 libsigsegv2 m4
建议安装:
  bison build-essential flex-doc m4-doc
下列【新】软件包将被安装:
  flex libfl-dev libfl2 libsigsegv2 m4
升级了 0 个软件包,新安装了 5 个软件包,要卸载 0 个软件包,有 620 个软件包未被升级。
需要下载 547 kB 的归档。
解压缩后会消耗 1,530 kB 的额外空间。
您希望继续执行吗? [Y/n] y
获取:1 http://mirrors.aliyun.com/ubuntu focal/main amd64 libsigsegv2 amd64 2.12-2 [13.9 kB]
获取:2 http://mirrors.aliyun.com/ubuntu focal/main amd64 m4 amd64 1.4.18-4 [199 kB]
获取:3 http://mirrors.aliyun.com/ubuntu focal/main amd64 flex amd64 2.6.4-6.2 [317 kB]
获取:4 http://mirrors.aliyun.com/ubuntu focal/main amd64 libfl2 amd64 2.6.4-6.2 [11.5 kB]
获取:5 http://mirrors.aliyun.com/ubuntu focal/main amd64 libfl-dev amd64 2.6.4-6.2 [6,316 B]
已下载 547 kB,耗时 1秒 (641 kB/s)    
正在选中未选择的软件包 libsigsegv2:amd64。
(正在读取数据库 ... 系统当前共安装有 152146 个文件和目录。)
准备解压 .../libsigsegv2_2.12-2_amd64.deb  ...
正在解压 libsigsegv2:amd64 (2.12-2) ...
正在选中未选择的软件包 m4。
准备解压 .../archives/m4_1.4.18-4_amd64.deb  ...
正在解压 m4 (1.4.18-4) ...
正在选中未选择的软件包 flex。
准备解压 .../flex_2.6.4-6.2_amd64.deb  ...
正在解压 flex (2.6.4-6.2) ...
正在选中未选择的软件包 libfl2:amd64。
准备解压 .../libfl2_2.6.4-6.2_amd64.deb  ...
正在解压 libfl2:amd64 (2.6.4-6.2) ...
正在选中未选择的软件包 libfl-dev:amd64。
准备解压 .../libfl-dev_2.6.4-6.2_amd64.deb  ...
正在解压 libfl-dev:amd64 (2.6.4-6.2) ...
正在设置 libsigsegv2:amd64 (2.12-2) ...
正在设置 libfl2:amd64 (2.6.4-6.2) ...
正在设置 m4 (1.4.18-4) ...
正在设置 flex (2.6.4-6.2) ...
正在设置 libfl-dev:amd64 (2.6.4-6.2) ...
正在处理用于 libc-bin (2.31-0ubuntu9) 的触发器 ...
正在处理用于 man-db (2.9.1-1) 的触发器 ...
正在处理用于 install-info (6.7.0.dfsg.2-5) 的触发器 ...

/bin/sh: 1: bison: not found

usbzh@usbzh-pc:~/work/linuxsrc/linux-5.4.1$ make menuconfig
  LEX     scripts/kconfig/lexer.lex.c
  YACC    scripts/kconfig/parser.tab.[ch]
/bin/sh: 1: bison: not found
make[1]: *** [scripts/Makefile.host:17:scripts/kconfig/parser.tab.h] 错误 127
make: *** [Makefile:567:menuconfig] 错误 2

安装bison

usbzh@usbzh-pc:~/work/linuxsrc/linux-5.4.1$ sudo apt install bison
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
建议安装:
  bison-doc
下列【新】软件包将被安装:
  bison
升级了 0 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 620 个软件包未被升级。
需要下载 657 kB 的归档。
解压缩后会消耗 2,028 kB 的额外空间。
获取:1 http://mirrors.aliyun.com/ubuntu focal/main amd64 bison amd64 2:3.5.1+dfsg-1 [657 kB]
已下载 657 kB,耗时 0秒 (1,405 kB/s)
正在选中未选择的软件包 bison。
(正在读取数据库 ... 系统当前共安装有 152303 个文件和目录。)
准备解压 .../bison_2%3a3.5.1+dfsg-1_amd64.deb  ...
正在解压 bison (2:3.5.1+dfsg-1) ...
正在设置 bison (2:3.5.1+dfsg-1) ...
update-alternatives: 使用 /usr/bin/bison.yacc 来在自动模式中提供 /usr/bin/yacc (yacc)
正在处理用于 man-db (2.9.1-1) 的触发器 ...

成功

最后,当我们安照提示安装了所有的工具包之后。再次执行make menuconfig之后,就可以看到界面了
make menuconfig

0 篇笔记 写笔记

makefile概述
makefile概述什么是makefile?或许很多Windows的程序员都不知道这个东西,因为那些Windows的集成开发环境(integrated development environment,IDE)都为你做了这个工作,但我觉得要作一个好的和专业的程序员,makefile还是要懂。这就好像现......
makefile介绍
makefile介绍make命令执行时,需要一个makefile文件,以告诉make命令需要怎么样的去编译和链接程序。首先,我们用一个示例来说明makefile的书写规则,以便给大家一个感性认识。这个示例来源于gnu 的make使用手册,在这个示例中,我们的工程有8个c文件,和3个头文件,我们要写......
makefile规则
书写规则规则包含两个部分,一个是依赖关系,一个是生成目标的方法。在Makefile中,规则的顺序是很重要的,因为,Makefile中只应该有一个最终目标,其它的目标都是被这个目标所连带出来的,所以一定要让make知道你的最终目标是什么。一般来说,定义在Makefile中的目标可能会有很多,但是第一......
makefile命令
书写命令每条规则中的命令和操作系统Shell的命令行是一致的。make会一按顺序一条一条的执行命令,每条命令的开头必须以 Tab 键开头,除非,命令是紧跟在依赖规则后面的分号后的。在命令行之间中的空格或是空行会被忽略,但是如果该空格或空行是以Tab键开头的,那么make会认为其是一个空命令。我们在......
makefile 变量
使用变量在Makefile中的定义的变量,就像是C/C++语言中的宏一样,他代表了一个文本字串,在Makefile中执行的时候其会自动原模原样地展开在所使用的地方。其与C/C++所不同的是,你可以在Makefile中改变其值。在Makefile中,变量可以使用在“目标”,“依赖目标”, “命令”或是......
makefile 条件判断
使用条件判断,可以让make根据运行时的不同情况选择不同的执行分支。条件表达式可以是比较变量的值,或是比较变量和常量的值。示例下面的例子,判断 $(CC) 变量是否 gcc ,如果是的话,则使用GNU函数编译目标。libs_for_gcc = -lgnunormal_libs =foo: ......
makefile 函数
Makefile中可以使用函数来处理变量,从而让我们的命令或是规则更为的灵活和具有智能。make 所支持的函数也不算很多,不过已经足够我们的操作了。函数调用后,函数的返回值可以当做变量来使用。函数的调用语法函数调用,很像变量的使用,也是以 $ 来标识的,其语法如下:$(
隐含规则在我们使用Makefile时,有一些我们会经常使用,而且使用频率非常高的东西,比如,我们编译C/C++的源程序为中间目标文件(Unix下是 .o 文件,Windows下是 .obj 文件)。本章讲述的就是一些在Makefile中的“隐含的”,早先约定了的,不需要我们再写出来的规则。“隐含规......
函数库文件也就是对Object文件(程序编译的中间文件)的打包文件。在Unix下,一般是由命令 ar 来完成打包工作。函数库文件的成员¶一个函数库文件由多个文件组成。你可以用如下格式指定函数库文件及其组成:archive(member)这个不是一个命令,而一个目标和依赖的定义。一般来说,这种用......
终于到写结束语的时候了,以上基本上就是GNU make的Makefile的所有细节了。其它的厂商的make基本上也就是这样的,无论什么样的make,都是以文件的依赖性为基础的,其基本是都是遵循一个标准的。这篇文档中80%的技术细节都适用于任何的make,我猜测“函数”那一章的内容可能不是其它make......
MakeFile的写法一般如下:CURRENT_PATH:=$(shell pwd) #模块所在的当前路径Linux_Kernel:=$(shell uname -r) #linux内核代码的当前版本Linux_Kernel_PATH:=/home/book/100ask_imx6ull......
新装的Ubuntu在执行menuconfig时,会出现一系统的问题。这是因为我们的系统中没有安装相应的工具导致,我们只需要安装提示,安装相应的工具​就行了。看到什么安装什么,直到最终的成功。Unable to find the ncurses packageusbzh@usbzh-pc:~/wor......
作者信息
我爱内核
Windows驱动开发,网站开发
好好学习,天天向上。
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!