内核编译不能找到standby.code错误解决办法
来源:互联网 发布:java项目部署到tomcat 编辑:程序博客网 时间:2024/06/08 03:49
一 说明
使用全志(Allwinner )A20处理器,为其单独编译内核时,首次编译有时会遇到以下错误:
arch/arm/mach-sun7i/pm/standby.S:3: Error: file not found: arch/arm/mach-sun7i/pm/standby/standby.code
如下图所示:
其实不仅仅是该问题,还有以下几个错误:
arch/arm/mach-sun7i/pm/mem.S:3: Error: file not found: arch/arm/mach-sun7i/pm/standby/super/suspend/suspend.code
arch/arm/mach-sun7i/pm/mem.S:9: Error: file not found: arch/arm/mach-sun7i/pm/standby/super/resume/resume0.code
这两个问题其实和第一个问题是一个问题,第一个问题解决了这两个问题也会同时解决。
二 错误造成原因
该问题是在linux内核3.3版本中遇到的,并且是在全志官方提供的SDK(A20_SDK_20130319.tar.gz)中遇到的,用SDK中的脚本编译时有该问题,单独编译其中的内核(不使用SDK中的脚本,直接使用make编译内核源码)时也会遇到该问题,该问题只在第一次编译时出现,之后编译不会有该问题,如果distclean后编译可能会再遇到(未测试),遇到后的处理方法是一样的。
造成该问题的原因是arch/arm/mach-sun7i/pm/standby目录下的文件没有编译,至于为什么没有编译和之前怎么没有该问题等,在此处不讨论(关键是本人没有深入研究,也不知道原因),此处只说明遇到该问题后的解决办法。
三 解决办法
解决办法很简单,就是手动编译standby就好了。
此处需要注意的是,如果编译内核时的输出文件并非内核目录而是其他目录(make时使用了O参数,如make uImage O=/tmp/build),需要多做一些处理,这种情况在后边介绍。
打开standby目录下的Makefile,发现有两个变量KDIR和CROSS_COMPILE,由于该模块是单独手动编译,所以它不能从上层模块继承该变量,需要make时传进去。
#makefile for standby.binINCLUDE = -I. \ -I$(KDIR)/include \ -I$(KDIR)/arch/arm/mach-sun7i/include \... ...CC = $(CROSS_COMPILE)gcc
知道需要的参数后就开始编译该模块:
#进入内核目录
$cd /home/linux/ex/linux-3.3/
#进入standby模块目录
$cd arch/arm/mach-sun7i/pm/standby
#编译模块
$make KDIR=/home/linux/ex/linux-3.3 CROSS_COMPILE=arm-linux-gnueabi-
此时就开始编译,编译过程中会有恨到打印信息,其中会出现以下4个信息:
到此,模块编译完成,可以继续编译内核了。
上边提到编译内核时的输出文件并非内核目录而是其他目录,此时需要多两个操作:
- 修改该模块的Makefile
- 拷贝生成的.code文件到输出文件的对应目录
1)该模块编译时依赖内核配置时产生的include/generated下的头文件,所以需要将输出文件下的include路径添加到Makefile的INCLUDE变量中,添加后的Makefile如下:
#makefile for standby.binINCLUDE = -I. \ -I$(KDIR)/include \ -I$(KDIR)/arch/arm/mach-sun7i/include \ -I/tmp/build/include \
在Makefile中添加了-I/tmp/build/include \,其中/tmp/build是编译内核时的文件输出路径(make时的参数O的值)。
2)编译后要将生成的standby.code、suspend.code、resume0.code及resume1.code分别拷贝到编译目录(如/tmp/build)下的对应位置:
/tmp/build/arch/arm/mach-sun7i/pm/standby/
/tmp/build/arch/arm/mach-sun7i/pm/standby/suspend/
/tmp/build/arch/arm/mach-sun7i/pm/standby/resume/
到此,该问题解决。
- 内核编译不能找到standby.code错误解决办法
- 嵌入式内核编译错误解决办法
- Fedora9.0和VMware6.5下编译内核出现arm-linux-gcc无法找到的错误解决办法
- 内核编译错误的一些解决办法
- 内核编译错误的一些解决办法
- 内核编译错误的一些解决办法
- 内核编译错误的一些解决办法
- 内核编译错误的一些解决办法
- linux内核编译__devinit错误解决办法
- xcode编译后无法找到xx文件的错误解决办法
- 开始看uc内核代码,不能编译,原因找到,估计的重装系统了,惨!
- Root路径设置错误,命令不能找到,command not found 的解决办法
- 在编译过程中出现不能找到扩展名为drf的错误解决方案
- Linux 内核编译 出现错误 make:arm-none-linux-gnueabi-gcc:命令未找到
- VS2005中编译dll文件, 出现"共享段无法找到"的错误及解决办法
- Vs.net 2005编译或者运行时报“没有找到MSVCR80D.dll...”错误的解决办法
- Oracle报错不能找到SID解决办法
- eclipse中不能找到dubbo.xsd解决办法
- Buy Tickets (线段树)单点更新
- SSM整合 -- Spring和Mybatis的配置文件详解
- 第一天
- 进程控制常用的一些操作
- 密码破译问题:地球和天女星座开战了,你是地球防卫军的密码破解员,以下你是破解出来的部分密码 tyt:好 huy:这 bvn:天 jkl :是 lgc:你 qqq:哈
- 内核编译不能找到standby.code错误解决办法
- python中的 while True
- 路径寻找问题:八数码问题
- opencv在CLion下CMakeList配置
- 想转型成为用户体验设计师,先看看这些再说
- 【SpringCloud】(十):高可用 Eureka
- 将SM2加密库从vs2008移植到vs2015上时报错
- R中的条形图和饼图绘制
- 水平垂直居中的方式(还有很多,这里以后继续补充)