编译Linux内核kernel时遇到的问题与解决方案

编译Linux内核kernel时遇到的问题与解决方案

问题1:scripts/sign-file.c:25:10: fatal error: openss1/opensslv.h: No such file or directory

image-20211129212256785

解决方法:

sudo apt-get install libssl-dev

问题2:/bin/sh: 1: flex: not found

image-20211129212528597

解决方法

sudo apt-get install flex

问题3:/bin/sh: 1: bison: not found

image-20211129212703451

解决方法

image-20211129212734278

sudo apt-get install bison -y

问题4:/hone/ysz/Desktop/os/linux-5.15.5/tools/objtool/include/objtool/elf.h:10:10: fatal error: gelf.h: No such file or directory

解决方法

sudo apt-get install libelf-dev

问题5:make[1]😗**No rule to nake target ‘debian/canonical-certs.pew’, needed by ‘certs/x509_certificate_list’.Stop.

image-20211129213507940

解决方法

编辑.config文件
vim .config

将文件中的CONFIG_SYSTEM_TRUSTED_KEYS置空如下

CONFIG_SYSTEM_TRUSTED_KEYS=""

(打开文件后输入“/”查找其所在的命令行)

之后make clean再make

问题6:arch/x86/Makefile:142: CONFIG_X86_X32 enabled but no binutils support

解决方法

sudo apt-get install binutils

问题7:sed: can’t read modules.order : No such file or directory

解决方法

查看文件名是否存在空格,删掉空格就可以正常运行了(别问为什么,我也不知道)

### 回答1: 这个错误提示是在编译x86架构的代码出现的,意思是虽然启用了config_x86_x32选项,但是没有binutils的支持。binutils是一组二进制工具,包括汇编器、链接器等等,是编译器的重要组成部分。因此,需要安装binutils或者检查是否正确配置了路径。 ### 回答2: 这个错误信息出现在编译Linux内核,因为在makefile文件中启用了x86_x32配置,但是当前的binutils版本不支持x86_x32。 x86_x32是一种新的32位模式,它允许在64位系统上以本机速度执行32位代码,且具有更小的内存占用和更快的中断响应间。但是,支持x86_x32需要一些特殊的binutils工具链。 Binutils是GNU工具集的一部分,提供了各种处理二进制文件的工具,如链接器、汇编器等。它们与特定的CPU体系结构以及操作系统紧密相关。 如果在编译Linux内核启用了x86_x32配置,但当前的binutils版本不支持x86_x32,则可能导致编译失败,并显示上述错误信息。 解决此问题的方法是更新binutils到最新版本,或者禁用x86_x32配置。如果不需要使用x86_x32,则可以简单地注释掉makefile中的相关行: #CONFIG_X86_X32=y 然后重新运行make命令即可。如果必须使用x86_x32,则需要检查当前的binutils版本是否支持,并根据需要更新或安装binutils工具链。 总之,arch/x86/makefile:142: config_x86_x32 enabled but no binutils support错误信息的出现通常是因为binutils版本不支持x86_x32,需要更新或禁用配置才能解决。 ### 回答3: 这条提示的意思是,在执行Linux内核源代码中arch/x86/makefile文件的第142行,发现配置了config_x86_x32选项,但是没有对应的binutils支持。 首先,需要了解一下config_x86_x32是什么。x32是一种32位程序模型,同也允许使用64位寄存器和指令。这种模型相比传统的32位模型具有更好的性能和内存使用效率。而config_x86_x32选项是用来启用x32模型的内核支持。 然后,需要了解一下binutils是什么。binutils是GNU工具集中的一个重要组件,它包括了一系列的二进制文件操作工具,如汇编器、链接器、反汇编器等等。在编译Linux内核,binutils是必不可少的组件之一。 因此,这条提示的意思是当启用config_x86_x32选项,应该也同提供对应的binutils支持,否则会出现错误。解决这个问题的方法是安装与所使用的Linux内核版本相对应的binutils版本,在编译加入对应的选项。例如,对于Linux内核版本4.2及以上,应该使用binutils 2.26及以上版本,并在编译加入-x32选项来启用x32模型支持。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值