为交叉编译器构建 newlib 时出现 'gettimeofday' 的类型冲突

标签 c cross-compiling osdev

在尝试构建 newlib 1.20.0 时... 我按照这个教程http://wiki.osdev.org/OS_Specific_Toolchain#newlib.2Flibc.2Fsys.2Fmyos

但是当尝试构建 newlib 时,我收到以下错误:

/../newlib-1.20.0/newlib/libc/sys/myos/'`syscalls.c
../../../../../../newlib-1.20.0/newlib/libc/sys/myos/syscalls.c:29:5: error: conflicting types for 'gettimeofday'
In file included from ../../../../../../newlib-1.20.0/newlib/libc/sys/myos/syscalls.c:7:0:
/usr/src/newlib-1.20.0/newlib/libc/include/sys/time.h:74:5: note: previous declaration of 'gettimeofday' was here
Makefile:280: recipe for target `lib_a-syscalls.o' failed

sycalls.c 用于 gettimeofday 声明:

int gettimeofday(struct timeval *p, struct timezone *z);

时间.h:

int _EXFUN(gettimeofday, (struct timeval *__p, void *__tz));

那么什么是冲突类型?请帮助...任何帮助表示感谢...

最佳答案

更改 syscalls.c 中函数的声明。然后将 void * 转换为结构体时区。

关于为交叉编译器构建 newlib 时出现 'gettimeofday' 的类型冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12860755/

相关文章:

c - 将 C 函数的值返回给 ASM

assembly - 在不使用C库的情况下以0xb8000显示文本视频存储器

c - C 中接收相同 ID 的线程

c - 带有精度说明符参数的 scanf

c - 从文件中读取以 ';' 分隔的数据

linux - 不支持配置arm-buildroot-linux-gnu

gcc - 为什么交叉编译Arm Linux GCC 出错?

assembly - 链接两个或多个程序集文件

使用 memcpy 将动态结构数组的内容复制到另一个动态数组中

windows - 适用于 Windows 7(32 位)中所有平台的 Golang 编译