You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

包含<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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:54:47