Can’t use ‘defined(@array)’
Linux kernel 无法编译通过,报了如下错误:
1 | Can't use 'defined(@array)' (Maybe you should just omit the defined()?) at kernel/timeconst.pl line 373. |
kernel/timeconst.pl
中的代码:
1 | 372 @val = @{$canned_values{$hz}}; |
将if (!defined(@val))
改为if (!@val)
,再次编译就 OK。
原因:perl版本升级到 v5.22.1,发现官网因为一个bug,将defined(@array)去掉了。可以直接使用数组判断非空。
来自:http://blog.5ibc.net/p/48570.html
error: implicit declaration of functio ‘ioread8’
MIPS 架构没有问题的内核模块代码,切到 x86-64,编译时提示如下错误。
通过到 linux 源代码 中搜索对应函数,发现函数位于 include/asm/io.h
。
由于涉及的文件比较多,直接通过 sed 对所有的 .c 文件添加该头文件引用,find . -name "*.c" -exec sed -i '1 i#include <asm/io.h>' "{}" \;
1 | error: implicit declaration of function 'ioread8' |