error cross compiling ubi-utils

Norbert van Bolhuis nvbolhuis at aimvalley.nl
Wed Jul 29 03:53:18 EDT 2009


This happens with current git tree (git://git.infradead.org/mtd-utils.git)

building for HOST (i686, FC6) works fine.
cross compiling (for powerpc) fails because of this error:

/swdev/tools/linuxppc/gcc-4.2.4-glibc-2.7/powerpc-e300c3-linux/bin/powerpc-e300c3-linux-gcc -Iinclude -Isrc -I../include -D_FILE_OFFSET_BITS=64 -O2 -g -Wall -Wextra 
-Wwrite-strings -Wno-sign-compare -c -o 
/home/nvbolhuis/new_83xx_kernel/ubi_utilities3_cross/mtd-utils//swdev/tools/linuxppc/gcc-4.2.4-glibc-2.7/powerpc-e300c3-linux/bin/powerpc-e300c3-linux/ubi-utils/libubi.o 
src/libubi.c -g 
-Wp,-MD,/home/nvbolhuis/new_83xx_kernel/ubi_utilities3_cross/mtd-utils//swdev/tools/linuxppc/gcc-4.2.4-glibc-2.7/powerpc-e300c3-linux/bin/powerpc-e300c3-linux/ubi-utils/.libubi.c.dep
In file included from include/libubi.h:29,
                  from src/libubi.c:33:
../include/mtd/ubi-media.h:149: error: expected specifier-qualifier-list before '__be32'
../include/mtd/ubi-media.h:269: error: expected specifier-qualifier-list before '__be32'
../include/mtd/ubi-media.h:356: error: expected specifier-qualifier-list before '__be32'
make[1]: *** 
[/home/nvbolhuis/new_83xx_kernel/ubi_utilities3_cross/mtd-utils//swdev/tools/linuxppc/gcc-4.2.4-glibc-2.7/powerpc-e300c3-linux/bin/powerpc-e300c3-linux/ubi-utils/libubi.o] 
Error 1
make[1]: Leaving directory `/home/nvbolhuis/new_83xx_kernel/ubi_utilities3_cross/mtd-utils/ubi-utils'
make: *** [subdirs_ubi-utils_all] Error 2

To cross compile I set CROSS=/swdev/tools/linuxppc/gcc-4.2.4-glibc-2.7/powerpc-e300c3-linux/bin/powerpc-e300c3-linux-
and issued make in mtd-utils directory.

The problem is that my powerpc cross compiler (gcc-2.7) doesn't define __be32 (nor __be16 and __be64) in
the standard system headers
(/swdev/tools/linuxppc/gcc-4.2.4-glibc-2.7/powerpc-e300c3-linux/powerpc-e300c3-linux/sys-include/asm/types.h).

For the HOST build "/usr/include/linux/types.h" is used which does define __be64/__be32/__be16.

I guess mtd-utils/include/mtd/ubi-media.h should use __u64/__u32/__u16 ?





More information about the linux-mtd mailing list