2012-10-12 18 views
0

而试图建立newlib 1.20.0 ... 我跟着这个教程http://wiki.osdev.org/OS_Specific_Toolchain#newlib.2Flibc.2Fsys.2Fmyos冲突的类型“的gettimeofday”,同时建立newlib的交叉编译

而是试图建立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); 

time.h中:

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

究竟什么是冲突的类型?请帮助....任何帮助表示赞赏...

+0

这里的冲突是syscalls.c中的声明指定第二个参数为'struct timezone *',而在time.h中它是'void *'。 syscalls.c中的那个是正确的。 –

+0

但不是无效*假设接受任何类型的指针......? – Saurabh7

+0

是的,但是如果编译器看到它们仍然不同(因此是冲突)类型,因为虽然void指针可以用来接受所有类型的指针,但它是一个与struct timezone指针不同的独特类型。 –

回答

0

变化您在syscalls.c功能声明。然后将void *转换为结构体时区。