c - st_mtimensec 在 struct stat 中不可用

标签 c mips cross-compiling stat uclibc

我正在尝试编译 Evas对于主机 mipsel-linux-uclibc。我正在使用我公司的旧二进制工具链来完成此操作。它是在 2008 年左右编写的,现在我还坚持着它。看起来这个工具链在 stat.h 的 struct stat 中缺少以下字段:

unsigned long int st_mtimensec; /* Nsecs of last modification.  */

我拥有的最接近的东西是:

__time_t st_mtime;      /* Time of last modification.  */

看起来这与uclibc有关。有没有简单的方法可以解决这个问题?

最佳答案

struct stat应该包含成员struct timespec st_mtim;并且stat.h>应该#define st_mtime st.mtim.tv_sec。如果您的 uClibc 太旧而无法正确使用这些内容,您可以尝试将它们侵入 header (可能只有一个 time_t st_mtime; 成员和旁边应该是纳秒的填充成员)。重要的是,您必须保持成员的布局(它们在结构中的偏移量)相同,否则事情将会严重破坏。

一个更好的问题可能是为什么 Evas 不能移植到较旧的(POSIX-2008 之前的)系统,以及为什么它对纳秒字段使用错误的名称(正确的名称是 st_mtim.tv_nsec,而不是 st_mtimensec。最有益的行动方案可能是在 Evas 中获取这些上游修复,这样其他用户将来就不会遇到问题。

关于c - st_mtimensec 在 struct stat 中不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14569330/

相关文章:

将数字转换为字符串

交叉编译可执行文件无法解析符号 pthread_create

assembly - MIPS 寄存器保存

linux - Crosstool-ng python 错误

c - OpenGL 中矩阵堆栈的意义何在?

c - 如何在C中以逗号分隔的十六进制字符串打印定义的int?

c - 将文本从结构中保存在 char 数组中

assembly - 如何计算跳转目标地址和分支目标地址?

linux - 是否可以在启用 v8 快照的情况下交叉编译 node.js?

linux - 链接到应用程序期间共享库 undefined reference