为ARM编译Linux内核时出错

时间:2014-03-09 09:33:57

标签: compiler-errors linux-kernel arm

我从

克隆了内核
 https://github.com/torvalds/linux.git

然后尝试编译如下

#make menuconfig 

菜单配置屏幕显示出来。在不进行任何更改的情况下,我保存了生成.config文件的配置

#make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-

我收到以下错误。请指教

In file included from arch/arm/kernel/asm-offsets.c:20:0:
/home/androiddev/linus/linux/arch/arm/include/asm/glue-df.h:107:2: error: #error Unknown data abort handler type
 #error Unknown data abort handler type
  ^
In file included from arch/arm/kernel/asm-offsets.c:21:0:
/home/androiddev/linus/linux/arch/arm/include/asm/glue-pf.h:54:2: error: #error Unknown prefetch abort handler type
 #error Unknown prefetch abort handler type
  ^
make[1]: *** [arch/arm/kernel/asm-offsets.s] Error 1
make: *** [prepare0] Error 2

2 个答案:

答案 0 :(得分:1)

如果你这样做

make menuconfig

然后为x86读取配置而不是ARM。首先,您需要采用默认配置外观@ this

Are kernel headers depend on processor type, vendor etc?

hv look @ Just black screen after running Qemu

如果您不知道配置,可以从目标rootfs /proc/config.gz获取.config的副本

Cross Compiling Linux Arm Kernel with new driver module

答案 1 :(得分:1)

由于某种原因,ARCH不是已保存配置的一部分。只要在没有ARCH = arm的情况下运行任何make命令,它就会默认返回到PC架构。使用arm编译器编译为Intel配置的内核会导致问题。

我通常在内核顶级makefile中提交我自己的本地ARCH = arm来避免这个问题但我真的不明白为什么它不是保存配置的一部分它会为工作的人节省很多麻烦在非基于英特尔的架构上......