小R科技-WIFI机器人网·机器人创意工作室

标题: 64位Ubuntu系统编译Openwrt遇到问题小记 [打印本页]

作者: liuviking    时间: 2016-9-13 16:12
标题: 64位Ubuntu系统编译Openwrt遇到问题小记
随手记下,以备忘,同时供其他爱好者参考。
环境:Ubuntu 16.04 64位Linux操作系统
Openwrt版本:Dreambox最新trunk版
报错提示:


Can't use 'defined(@array)' (Maybe you should just omit the defined()?) at kernel/timeconst.pl line 373.
/opt/ARM/mini6410/linux/linux-2.6.38/kernel/Makefile:140: recipe for target 'kernel/timeconst.h' failed
make[1]: *** [kernel/timeconst.h] Error 255
Makefile:916: recipe for target 'kernel' failed
make: *** [kernel] Error 2

原因:
perl版本升级到了 v5.22.1,该版本将defined(@array)去掉了。可以直接使用数组判断非空。


解决方案:
将 根目录/build_dir/linux-ar71xx_generic/linux-3.3.8/kernel目录下的timeconst.pl文件打开,定位到373行,修改原代码:
  1. @val = @{$canned_values{$hz}};
  2. if (!defined(@val)) {
  3. @val = compute_values($hz);
  4. }
  5. output($hz, @val);
复制代码



为:
  1. @val = @{$canned_values{$hz}};
  2. if (!@val) {
  3. @val = compute_values($hz);
  4. }
  5. output($hz, @val);
复制代码





即将
  1. defined(@val)
复制代码

改为
  1. @val
复制代码

保存,重新编译,通过!





欢迎光临 小R科技-WIFI机器人网·机器人创意工作室 (https://www.wifi-robots.com/) Powered by Discuz! X3.4