天天看點

編譯linux 核心時出現:Can't use 'defined(@array)'(Maybe you should just omit the

原文位址:http://www.linuxdiyf.com/linux/24289.html

0、開發環境

Ubuntu18.04.1(64bit)

linux-2.6.39.4

1、錯誤描述

使用ubuntu14.04(64bit)編譯linux2.6.39.4并沒有出現什麼錯誤,但是使用ubuntu18.04.1(64bit)編譯linux-2.6.39.4時,卻提示Can't use 'defined(@array)' (Maybe you should just omit the defined()?)錯誤。

2、解決方法

參考:編譯kernel perl版本bug

最近更新了一下ubuntu系統,突然發現mini2440的Linux kernel無法編譯通過了,報了如下錯誤:

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

其實,提示的錯誤資訊已經明确告訴你了,你應該省略defined().

這裡,我們打開 kernel/timeconst.pl

@val = @{$canned_values{$hz}};

if (defined(@val)) {

@val = compute_values($hz);

}

output($hz, @val);

将if (defined(@val)) 改為if (@val),再次編譯就可以通過了。

查了一下更新,發現其中有一項是perl版本更新到了 v5.22.1,然後查了perl官方文檔,發現官網因為一個bug,該版本将defined(@array)去掉了。可以直接使用數組判斷非空。

繼續閱讀