0

我正在尝试将我的 32 位 ARM 架构移植到 64 位时间值。

从Linux Kernel 中的 64 位 time_t读取答案,它告诉我以下信息:

所有用户空间都必须使用 64 位 time_t 进行编译,即将到来的 musl-1.2 和 glibc-2.32 版本以及已安装的 linux-5.6 或更高版本的内核头文件都将支持它。

我正在使用自定义 Linux 内核版本 5.10.10 并使用 glibc 版本 2.32 使用 crosstool-ng 构建我自己的 gcc 工具链。

为了测试时间大小,我写了一个简单的打印:

printf("Timesize = %d\n", __TIMESIZE);
printf("sizeof time_t = %d\n", sizeof(tv.tv_sec));

这给了我输出:

时间大小 = 32

time_t 的大小 = 4

按照glibc-2.32中的defines和typedefs,可以看到相关类型定义如下:

#define __TIMESIZE __WORDSIZE

#define __TIME_T_TYPE __SLONGWORD_TYPE

#define __SLONGWORD_TYPE long int

但是对于我的架构来说__WORDSIZE__SLONGWORD_TYPE它们的大小都是 32 位的。

是否可以time_t在我的 32 位架构目标上定义为 64 位?

4

0 回答 0