一、简介

本文主要介绍在编译内核中常见的报错问题的处理方法,编译过程中的主要报错有缺少本地依赖库、config设置、gcc版本与内核版本不匹配、内核源文件版本问题等,具体问题请看第二章。

二、常见报错

1、CC      arch/arm/kernel/asm-offsets.s
cc1: error: invalid option `abi=aapcs-linux'
make[1]: *** [arch/arm/kernel/asm-offsets.s] Error 1
make: *** [prepare0] Error 2
//解决方法:上述的关掉EABI选项可以通过测试(Kernel Features->Use EABI)
2、drivers/video/console/vgacon.o:987:warning:comparison is always true due to limited range of data type
make[3]:***[drivers/video/console/vgacon.o] error 1
make[2]:***[drivers/video/console2] error 2
make[1]:***[drivers/video1] error 2
make:***[drivers] error 2
//解决方法:在make menuconfig 时Device Drivers → Graphics support → Console display driver support →VGA text console(不选这个)
3、出现/usr/local/arm/bin/arm-linux-ld:arch/arm/kernel/vmlinux.lds:782: parse error
make:***[.tmp_vmlinux1] Error 1这类错误
//解决方法:修改arch/arm/kernel/vmlinux.lds
[arm@localhost linux2.6.14]$vi arch/arm/kernel/vmlinux.lds
//将文件尾2条的ASSERT注释掉(1439行)ASSERT((__proc_info_end __
proc_info_begin), "missing CPU support")
ASSERT((__arch_info_end __
arch_info_begin), "no machine record defined")
//原因:binutils版本太旧
4、 常见依赖包缺失报错,如libssl-dev、openssl-devel、libncurses5-dev、bison、flex,具体如下:1) make menuconfig/usr/bin/ld: cannot find -lncurses//解决办法:sudo apt-get install libncurses5-dev2)[root@localhost *内核目录*]# make -j4HOSTCC  scripts/extract-certscripts/extract-cert.c:21:25: 致命错误:openssl/bio.h:没有那个文件或目录#include <openssl/bio.h>//解决办法:yum install openssl-devel3)[root@localhost *内核目录*]# make menuconfigUPD     scripts/kconfig/.mconf-cfgHOSTCC  scripts/kconfig/mconf.oYACC    scripts/kconfig/zconf.tab.c/bin/sh: bison: 未找到命令make[1]: *** [scripts/kconfig/zconf.tab.c] 错误 127make: *** [menuconfig] 错误 2//解决办法:[root@localhost *内核目录*]# yum install bison flex4)compress.c:14:58: fatal error: zlib.h: No such file or directorycompilation terminated.//解决办法:sudo apt-get install zlib1g-dev5)/bin/sh: gmake: not foundmake[3]: *** [clean] Error 1//原因:在ubuntu中已经取消掉了gmake,都用make代替。//解决办法: sudo ln -s /usr/bin/make /usr/bin/gmake6)“error : openssl/bio.h :No such file or folder//解决方法:sudo apt-get install libssl-dev7)Makefile:xxx: recipe for target 'xxx' failedmake[2]:***[arch/arm/boot/compressed/piggy.lzo] Error 1make[1]: ***[arch/arm/boot/compressed/vmlinux] Error 2//解决方法:sudo apt-get install lzo lzop//原因:缺少工具lzo,lzop,LZO是致力于解压速度的一种数据压缩算法
5、在make modules_install时最后几行弹出错误:
if [ -r System.map -a -x /sbin/depmod ]; then /sbin/depmod -ae -F System.map 2.6.12.2; fi
/bin/sh: line 1: 3357 已杀死 /sbin/depmod -ae -F System.map 2.6 .12.2
make: *** [_modinst_post] 错误 137
//解决方法:make module_install之前你是否关闭了selinux,
//原因:该问题是selinux阻止写/lib/modules/ 目录
6、error:unrecognized command line options '-mabi=apcs-gnu'
note: valid arguments to '-mabi='  are: ms sysv
error: unrecognized command line option '-mlittle-endian'
//解决方法:交叉编译工具未指定,加上CROSS_COMPILE=arm-linux- 参数
7、使用内核包编译驱动时常常提示如下:
WARNING: Symbol version dump /usr/src/linux-2.6.26/Module.symvers is missing; modules will have no dependencies and modversions.
//原因:通常头核心包中是没有Module.symvers这个文件的,要想获取这个文件只能到下载相同版本核心(2.6.26-1-686)的头文件,只有下载的头文件中才有这个Module.symvers。
//解决方法:把Module.symvers 复制到核心包中,然后执行如下步骤:make oldconfig && make prepare && make scripts。
//然后重新编译驱动,将解决这个warning,同时也解决了版本不正确的问题

make 命令默认执行的是 make all,make all 有四个阶段: prepare test compile package
make prepare : 只会执行prepare阶段,这个阶段主要是下载编译依赖
make test : 只会执行test阶段,这个阶段主要是做单元测试
make compile : 只会执行compile阶段,这个阶段主要是进行编译
make package : 只会执行packege阶段,这个阶段会把编译产出都copy到output目录中
make install : 只会执行install阶段,这个阶段是把编译产出放到$GOPATH/bin目录下,这个不是必须的
make clean : 只会执行clean阶段,这个阶段把编译输出的一些文件删除,恢复到编译之前的状态

8、fatal error: linux/compiler-gcc7.h: No such file or directory.
提示缺少compiler-gcc7.h这个文件,是由于内核版本较低和我的gcc版本不匹配造成的有三种解决方法:1.在内核文件夹中include/linux目录下找到compiler-gcc4.h文件,不同内核版本可能不一样,也有可能是compiler-gcc3.h,将它重命名为compiler-gcc7.h。然后重新编译一下就好了。2.在新的内核源码中拷贝一个compiler-gcc7.h,将它拷贝到内核文件夹include/linux目录下,重新编译即可。3.重装一个版本低一点的gcc。
9、在进行make oldconfig时出现,code model kernel does not support PIC mode的错误
解决方法如下:
在源码的根目录下的Makefile中的KBUILD_CFLAGS中添加一个编译选项-fno-PIE

三、其他相关链接

1、交叉编译linux内核详细总结

2、gcc交叉编译工具链制作

编译linux内核常见报错(最全)总结讲解相关推荐

  1. 【错误记录】编译 Linux 内核报错 ( fatal error: openssl/opensslv.h: No such file or directory )

    文章目录 一.报错信息 二.解决方案 一.报错信息 编译 Linux 内核 , 执行 sudo make 命令 , 开始正式编译 Linux 内核 , 报如下错误 : root@ubuntu:~/ke ...

  2. 【错误记录】编译 Linux 内核报错 ( /bin/sh: 1: bison: not found )

    文章目录 一.报错信息 二.解决方案 一.报错信息 编译 Linux 内核 , 执行 make menuconfig 配置菜单命令 , 报如下错误 : root@ubuntu:~/kernel/lin ...

  3. 【错误记录】编译 Linux 内核报错 ( /bin/sh: 1: flex: not found )

    文章目录 一.报错信息 二.解决方案 一.报错信息 编译 Linux 内核 , 执行 make menuconfig 配置菜单命令 , 报如下错误 : root@ubuntu:~/kernel/lin ...

  4. Mac上编译Linux内核时找不到ncurses

    Mac上编译Linux内核时找不到ncurses 前言 Linux源码零零散散看了一些,东西太多.今天突然有兴趣想去编译一下Linux内核,就去网上找了一些资料,由于我是用的Mac,然后并没有找到好的 ...

  5. k8s常见报错以及解决方法(一)

    k8s常见报错以及解决方法(一) 现阶段我们使用k8s集群越来越多,随之而来的是一系列的问题,接下来我向大家来介绍一下我遇到的一些问题以及解决方法 一.报错cannot allocate memory ...

  6. 【Linux 内核】编译 Linux 内核 ⑥ ( 安装 OpenSSL | 安装其它依赖库 | 内核编译完成 )

    文章目录 一.安装 OpenSSL 二.安装其它依赖库 三.Linux 内核编译完成 一.安装 OpenSSL 参考 [错误记录]编译 Linux 内核报错 ( fatal error: openss ...

  7. 微信小程序根据坐标点解析地址常见报错:请求来源未被授权

    功能需求 微信小程序提供的接口能够获取到当前位置的坐标(经纬度),但是不能得到当前位置的地址.或者从后台获取到坐标(经纬度)要解析成文字描述的地址小程序也没有对应的接口. 实现思路 这时候就需要通过腾 ...

  8. Eclipse 的常见报错、警告和原因分析、解决方式以及相关操作快捷键小结(持续更新)

    文章目录 前言 一.常见的三种类型错误 二.运行时错误 总结 前言 Eclipse 作为我们开发中最为常用的一款 IDE,功能齐全(虽然近几年被 IDEA 占尽了风头),但是最为基本的一些操作我们是要 ...

  9. java常问的报错_java常见报错及解决

    Java常见报错信息: Java Exception: 1.Error 2.Runtime Exception 运行时异常 3.Exception 4.throw 用户自定义异常 异常类分两大类型:E ...

最新文章

  1. Linux正则表达式grep与egrep
  2. 股市币市:数据分析与交易所最新公告
  3. 网站优化——网站索引量骤降从网站优化找原因
  4. js一个典型的对象写法,推荐使用这种格式,用于处理图像的基本方法、
  5. 程序员年纪越大,工作被取代性越强
  6. 题解报告:hihoCoder #1175:拓扑排序·二
  7. python+requests对app和微信小程序进行接口测试
  8. 1、java中自己觉得重要的部分——未完待续
  9. 适合C语言学习的书籍推荐 | 初学者必备
  10. python自动填表单_用pythonwebdriver实现自动填表
  11. 面向猴子编程 GO制作水印
  12. a5解锁 oppo_oppoa5忘记密码了怎么强制解锁
  13. PHP容器--Pimple运行流程浅析
  14. 【麒麟操作系统软件商店老是闪退?--麒麟系统软件商店卸载与重装(小白教程)】
  15. 魔戒中超眩的武器装备!
  16. 复习步骤12- 16 BPMN事件(3)结束事件
  17. [转]Win10 莫名卡顿问题解决(1903-1909版本)
  18. 唯品会php接口,唯品会开放平台
  19. [转帖]差之毫厘谬之千里!带你认识CPU后缀含义
  20. 【Android开发】 在Activity中使用Menu

热门文章

  1. Thinkpad x61 重装系统后修复一键恢复 (转)
  2. 以太网口armmos推挽开漏上下拉高低边时域频域傅里叶
  3. win11系统如何使用IE浏览器
  4. 【Win32】初识Win32编程
  5. 【华为OD机试真题 JAVA】算法中的常用知识点
  6. uni-app小程序图片v-html自适应问题
  7. 【cocos shader 009】 受伤受击场景闪红特效
  8. vue使用命令行构建完项目后_通过命令行创建vue项目的方法
  9. 纸质合同和电子合同的区别
  10. 初码-Azure系列-迁移PHP应用至Azure的一些实践记录和思考