编译linux内核常见报错(最全)总结讲解_编译linux内核报错 make: *** [makefile:2012: .] error 2-程序员宅基地

技术标签: 驱动  内核  linux内核  驱动开发  

一、简介

本文主要介绍在编译内核中常见的报错问题的处理方法,编译过程中的主要报错有缺少本地依赖库、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-dev

	2)[root@localhost *内核目录*]# make -j4
	  HOSTCC  scripts/extract-cert
	scripts/extract-cert.c:21:25: 致命错误:openssl/bio.h:没有那个文件或目录
	 #include <openssl/bio.h>
	//解决办法:yum install openssl-devel

	3)[root@localhost *内核目录*]# make menuconfig
	  UPD     scripts/kconfig/.mconf-cfg
	  HOSTCC  scripts/kconfig/mconf.o
	  YACC    scripts/kconfig/zconf.tab.c
	/bin/sh: bison: 未找到命令
	make[1]: *** [scripts/kconfig/zconf.tab.c] 错误 127
	make: *** [menuconfig] 错误 2
	//解决办法:[root@localhost *内核目录*]# yum install bison flex

	4)compress.c:14:58: fatal error: zlib.h: No such file or directory
	compilation terminated.
	//解决办法:sudo apt-get install zlib1g-dev

	5)/bin/sh: gmake: not found
	make[3]: *** [clean] Error 1
	//原因:在ubuntu中已经取消掉了gmake,都用make代替。
	//解决办法: sudo ln -s /usr/bin/make /usr/bin/gmake

	6)“error : openssl/bio.h :No such file or folder
	//解决方法:sudo apt-get install libssl-dev
	
	7)Makefile:xxx: recipe for target 'xxx' failed
	make[2]:***[arch/arm/boot/compressed/piggy.lzo] Error 1
	make[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交叉编译工具链制作

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Luckiers/article/details/124544179

智能推荐

npqsql or mono.security.dll 下载_npgsql.dll和mono.security.dll下载-程序员宅基地

文章浏览阅读942次。string connectionString = “Server=127.0.0.1;Port=5432;Database=myDataBase;User Id=myUsername;Password=myPassword;”;NpgsqlConnection conn = new NpgsqlConnection(connectionString);conn.Open();C#连接Po..._npgsql.dll和mono.security.dll下载

cacti安装配置-程序员宅基地

文章浏览阅读49次。(安装前提:httpmysqlphp已安装,如果没有安装,使用yuminstallhttp*mysql*php*)1、下载所需的安装包安装cacti需要以下几个软件的支持Cacti、rrdtool、net-snmpCacti下载地址:http://www.cacti.net/我下载的是cacti-0.8.8a.tar.gzrrdtool和net-snmp直接使用..._下载cacti-0.8.8a.tar.gz安装包

Libevent 的简单实用_libevent粘包处理-程序员宅基地

文章浏览阅读212次。轻量级网络库Libevent对高效的I/O进行了封装,提供统一的API,我们调用API就会很方便,要搞清楚每个API背后的操作。 什么是高效的I/O??? 如Linux中独有的epoll,windows的IOCP,BSD的Kqueque我使用的是libevent2.0.21版本, Libevent2.0版本以后提供了buffere..._libevent粘包处理

python数据分析论文报告_python数据报告-程序员宅基地

文章浏览阅读1.8k次。广告关闭腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元!处理数据的 pandas,绘制可视图的 matplotlib,生成交互图的 bokeh,实现机器学习的 scikit-learn 等等,python 数据分析师早就能把这些工具用得出神入化了。 但今天呆鸟要和大家聊一聊 python 数据分析报告的痛点。 ----用 python 做..._python数据分析论文

0.从零搭建VUE项目,语言使用TypeScript_vue项目使用什么语言写-程序员宅基地

文章浏览阅读270次。搭建vue项目准备项目创建准备你需要安装nodejs,如已安装,请跳过。项目创建Install Vue CLI, 如果尚未安装npm install --global @vue/cli@next --registry=https://registry.npm.taobao.org2.创建一个新项目, 选择 “Manually select features” 选项vue create my-project-name如果已经有一个不存在TypeScript的 Vue CLI项目,请添_vue项目使用什么语言写

30岁,转行学编程靠谱吗?_32岁转行编程-程序员宅基地

文章浏览阅读4.7k次,点赞5次,收藏6次。前几天在知乎上,刷到这么一个问题鉴于有不少人看了我的blog给我私信一些职业规划相关的问题,讨论很多的就是担心自己年龄是否还适合转行。 于是决定静心下来码了一篇回答,同时搬到博客园来供大家消遣。。。--------------------------下面是原文-----------------------------先说结论,大龄青年不建议转行学IT,因为你已经..._32岁转行编程

随便推点

python类和对象的定义_Python类和对象的定义与实际应用案例分析-程序员宅基地

文章浏览阅读77次。本文实例讲述了Python类和对象的定义与实际应用。分享给大家供大家参考,具体如下:1.DVD管理系统# -*- coding:utf-8 -*-#! python3class dvd:def __init__(self,name,price,state):self.name=name;self.price=priceself.state=statedef __str__(self):stat='..._if self.state in self.operations

python+adb让android设备灭屏并监听屏幕亮灭状态_如何用代码使监控黑屏-程序员宅基地

文章浏览阅读1.9k次。import osfrom time import sleepdef screenIsAwaked(): ''' 判断屏幕亮屏状态 返回 True:屏幕亮屏 返回 False:屏幕灭屏 ''' adb = 'adb shell dumpsys window policy|findstr mAwake' with os.popen(adb) as f: res = f.read() return True if 'true'_如何用代码使监控黑屏

Word中没有出现Endnote工具条的一般解决方案_word没有endnote插件,要下载插件吗-程序员宅基地

文章浏览阅读1.1w次。http://blog.sciencenet.cn/blog-260374-513670.html处理步骤如下,以Office word 2007为例,word 2003等版本可以参考处理:1.在word中手工添加endnote加载项。左上角的office按钮-word选项-加载项-左下方COM加载项 若找到Endote相关项,则打勾--确定若是这一_word没有endnote插件,要下载插件吗

Activiti6.0-写在前面的话_activiti6.0 database执行语句-程序员宅基地

文章浏览阅读111次。Activiti是什么当你打开这篇博客时,说明你还不知道Activiti是什么,那么工作流引擎对你来说也是新的概念,我这里不去copy百度百科了,简单说Activiti是一个开源的自动化业务工作引擎,担有一点不要和Android的Activity搞混了。为什么使用工作流引擎简单来说,当你在复杂的业务流程中过多的使用if…else那是超级崩溃的,我不知道你们有没有这样的经历,我曾经在一个..._activiti6.0 database执行语句

山东大学计算机组成与设计实验六 二进制补码加法器实验_补码加法器实验报告-程序员宅基地

文章浏览阅读2.9k次,点赞12次,收藏67次。山东大学计算机组成与设计实验六二进制补码加法器实验,山东大学计算机组成与设计实验,山东大学计算机组成与设计实验报告,计算机组成原理实验报告,山东大学计算机组成原理实验报告。_补码加法器实验报告

安卓rpg游戏存档位置_RPGMakerMV探秘02-存档-程序员宅基地

文章浏览阅读1.5w次。一般情况下,RPGMaker都是单机游戏,单机游戏必然会涉及到存档,本文我们就来聊一聊RPGMakerMV的存档。 探秘系列的第一篇我们已经介绍,引擎存档位置在save目录下。 其实新建项目时,是不存在save目录的,当进行存档时,才会新建save目录。 不使用插件的情况下,存档位置有20个,如果超过了20就只能覆盖之前的存档。当我进行首次存档时(选的第一个存档位置)..._安卓黄油存档位置

推荐文章

热门文章

相关标签