内核编译出错解决

1、编译内核出现以下错误

Can't use 'defined(@array)' (Maybe you should just omit the defined()?) at kernel/timeconst.pl line 373.

/root/working/Hi3520D_SDK_V2.0.3.0/osdrv/kernel/linux-3.0.y/kernel/Makefile:140: recipe for target 'kernel/timeconst.h' failed

make[1]: *** [kernel/timeconst.h] Error 255

Makefile:945: recipe for target 'kernel' failed

make: *** [kernel] Error 2

解决办法:

将kernel/timeconst.pl中第373行的defined()去掉只留下@val就可以了

2、

1
arch/arm/kernel/asm-offsets.c:1: error: bad value (armv4) for -march=switch 
arch/arm/kernel/asm-offsets.c:1: error: bad value (armv4) for -mtune=switch 
make[1]: *** [arch/arm/kernel/asm-offsets.s] Error 1 
make: *** [arch/arm/kernel/asm-offsets.s] Error 2 
解决办法: 设置makefile中的编译器 191行和192行,改为ARCH =arm, arch compile= arm-linux- 
2
kernel/cpuset.c: In function 'cpuset_can_attach':
kernel/cpuset.c:1386: error: 'task' undeclared (first use in this function)
kernel/cpuset.c:1386: error: (Each undeclared identifier is reported only once
kernel/cpuset.c:1386: error: for each function it appears in.)
make[1]: *** [kernel/cpuset.o] Error 1

in kernel/cpuset.c:1386 change

if ((current != task) && (!capable(CAP_SYS_ADMIN))) {

to

if ((current != tsk) && (!capable(CAP_SYS_ADMIN))) {
原文地址:https://www.cnblogs.com/PengfeiSong/p/6434007.html