It seems there is a problem in /sys/am64/_types.h when cross-compiling a 32-bit code in amd64 machine, the following code prints 4 instead of 8: /* int64_size.c */ #include <sys/types.h> #include <stdio.h> int main() { printf("%d\n", sizeof(int64_t)); return (0); } $cc -m32 -o int64_size -B /usr/lib32/ int64_size.c $./int64_size 4 Regards, David Xu