Skip to contentSkip to conversation

error cross compiling ubi-utils

DISCUSSION Norbert van Bolhuis 2 participants 3 messages Jul 29, 2009 – Aug 11, 2009 Memory technology devices (MTD)

lore
Share & tools
lore
#0 lore raw

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 ?

#1 lore raw
Quoted 39 lines · Norbert van Bolhuis

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

(quoted diff) +0 -2
-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).

Quoted 4 lines

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 ?

I believe new kernels export these types via their headers, and you just have an old kernel. You could try to make mtd-utils be independent of these types.

Signature · 2 lines
Best Regards,
Artem Bityutskiy (Артём Битюцкий)
#2 lore raw
Quoted 6 lines · Artem Bityutskiy
Quoted 1 line

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

I believe new kernels export these types via their headers, and you just have an old kernel. You could try to make mtd-utils be independent of these types.

You're right.
I didn't realize my "../sys-include/asm/types.h" comes from linux-libc-headers-2.6.12.0(/include/asm-ppc/types.h).
I guess I should've used more recent kernel headers when building my CDE.