再ubuntu64位機下編譯linux-2.32.2,出現Can't use 'defined(@array)' (Maybe you should just omit the defined()?)


0、開發環境
Ubuntu16.04.1(64bit)
linux-2.6.32.4
 
1、錯誤描述
使用ubuntu14.04(64bit)編譯linux2.6.32.4並沒有出現什么錯誤,但是使用ubuntu16.04.1(64bit)編譯linux-2.6.32.4時,卻提示Can't use 'defined(@array)' (Maybe you should just omit the defined()?)錯誤。
 
2、解決方法
參考:編譯kernel perl版本bug
最近升級了一下MAC系統,突然發現android的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)去掉了。可以直接使用數組判斷非空。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM