st_mtimensec在struct stat中不可用

时间:2013-01-28 19:10:37

标签: c mips cross-compiling stat uclibc

我正在尝试为主机 mipsel-linux-uclibc 编译Evas。我正在使用我公司的旧二进制工具链来完成它。它是在2008年左右编制的,我现在有点困惑。看起来这个工具链缺少stat.h的struct stat中的以下字段:

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

我最接近的是:

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

看起来这与uclibc有关。有一个简单的方法吗?

1 个答案:

答案 0 :(得分:2)

struct stat 假设包含成员struct timespec st_mtim;stat.h 假设#define st_mtime st.mtim.tv_sec。如果你的uClibc太旧而不能正确使用它们,你可以尝试将它们攻击到标题中(可能只有一个time_t st_mtime;成员和一个填充成员旁边的纳秒应该是)。重要的是你必须保持成员的布局(他们在结构中的偏移)相同或者事情会非常糟糕。

更好的问题可能是为什么Evas不能移植到较旧的(POSIX-2008之前的)系统,以及为什么它使用了错误的名称纳秒字段(正确的名称是st_mtim.tv_nsec,而不是{{ 1}}。最有益的做法可能是在Evas上游修复这些问题,以便其他用户将来不会遇到问题。