Ubuntu下交叉编译内核出错:Can't use 'defined(@array)' (Maybe you should just omit the defined()?)。
一、问题描述。
高版本Ubuntu下进行交叉编译内核,出现如下错误。
make CROSS_COMPILE=arm-arago-linux-gnueabi- ARCH=arm uImage
Can't use 'defined(@array)' (Maybe you should just omit the defined()?) at kernel/timeconst.pl line 373.
make[1]: *** [/*/kernel-3.2/kernel/Makefile:141: kernel/timeconst.h] Error 255
make: *** [Makefile:945: kernel] Error 2
mv: cannot stat 'arch/arm/boot/uImage': No such file or directory
二、问题分析。
版本升级中存在的bug。
三、解决方案。
根据提示信息,对kernel/timeconst.pl文件做如下修改。再进行编译,问题解决。
修改前:
@val = @{$canned_values{$hz}};
if (!defined(@val)) {
@val = compute_values($hz);
}
output($hz, @val);
修改后:
@val = @{$canned_values{$hz}};
if (!(@val)) {
@val = compute_values($hz);
}
output($hz, @val);