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