gpt4 book ai didi

linux - Linux 内核中的 64 位 time_t

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:16:51 31 4
gpt4 key购买 nike

我已经编译了 3.19.1 内核,但 time_t 仍然有问题.只是一个简单的程序 cout << sizeof (time_t);给出 4 个字节的大小,而不是我想要的 8 个字节。

我应该在 make menuconfig 期间打开特定选项吗?

最佳答案

32 位 Linux 上的 64 位时间支持是 first introduced in the 5.1 kernel所以如果你比那年长,对不起。因为更改旧系统调用的返回类型会破坏旧应用程序,新的 *time64 syscalls必须改为添加。检查this table并且您会看到这些系统调用仅在 32 位平台上可用。

现在,如果您正在为 32 位系统编写代码,您可以直接调用 clock_gettime64(从内联汇编,或从带有 syscall() 函数的 C 中)来获取当前时间。但是在那之后你就完全靠自己了。要获得完整的用户空间 支持,您必须使用 Linux 5.6 或更高版本 以及 musl 1.2+ 或 glibc 2.32+。只需重建您的代码,time_t 将变为 64 位长

  • All user space must be compiled with a 64-bit time_t, which will be supported in the coming musl-1.2 and glibc-2.32 releases, along with installed kernel headers from linux-5.6 or higher.

  • Applications that use the system call interfaces directly need to be ported to use the time64 syscalls added in linux-5.1 in place of the existing system calls. This impacts most users of futex() and seccomp() as well as programming languages that have their own runtime environment not based on libc.

https://lkml.org/lkml/2020/1/29/355?anz=web

阅读更多信息

关于linux - Linux 内核中的 64 位 time_t,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29085124/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com