包含<linux/time.h>时getnstimeofday()隐式声明错误解决
解决方案
已解决!特别感谢@IanAbbott的帮助
要解决这个编译错误,你需要引入以下两个头文件:
#include <linux/ktime.h> #include <linux/timekeeping.h>
而不是你之前使用的 <linux/time.h>。
更多细节可查看相关讨论。
原始问题
我正在编写一个名为 sys_my_time.c 的系统调用,代码里用到了 getnstimeofday() 函数。我已经引入了 <linux/time.h> 头文件,具体代码如下:
#include <linux/kernel.h> #include <linux/linkage.h> #include <linux/time.h> asmlinkage int sys_my_time() { struct timespec t; getnstimeofday(&t); // ... return 0; }
但编译时却弹出了如下错误:
CC kernel/sys_my_time.o kernel/sys_my_time.c: In function ‘sys_my_time’ kernel/sys_my_time.c:8:3: error: implicit declaration of function ‘getnstimeofday’[-Werror=implicit-function-declaration] getnstimeofday(&t); ^ cc1: some warnings being treated as errors scripts/Makefile.build:320: recipe for target 'kernel/sys_my_time.o' failed make[1]: *** [kernel/sys_my_time.o] Error 1 Makefile:1029: recipe for target 'kernel' failed make: *** [kernel] Error 2
我实在搞不懂错误发生的原因。
补充说明:我是在Ubuntu 16.04环境下编译内核版本V4.14.25。
内容的提问来源于stack exchange,提问作者tigercosmos
相关产品推荐
相关产品推荐

