Openmoko Bug #2325: adventures in building Qi on Debian armel

Openmoko Public Trac bugs at docs.openmoko.org
Sat Jan 2 12:21:13 CET 2010


#2325: adventures in building Qi on Debian armel
-----------------------------+----------------------------------------------
 Reporter:  pabs             |          Owner:  openmoko-kernel
     Type:  defect           |         Status:  new            
 Priority:  normal           |      Milestone:                 
Component:  System Software  |        Version:                 
 Severity:  normal           |       Keywords:  qi             
 Haspatch:  1                |      Blockedby:                 
Estimated:                   |    Patchreview:                 
 Blocking:                   |   Reproducible:                 
-----------------------------+----------------------------------------------
 First try with a fresh checkout of master:

 {{{
 root at booph:~/devel/misc/qi (master)# make CPU=s3c6410 CROSS_PATH=
 CROSS_COMPILE= COMPILER_LIB_PATH_PRE= COMPILER_LIB_PATH=
 In file included from src/phase2.c:29:
 include/image.h:173: error: expected specifier-qualifier-list before
 'ulong'
 include/image.h:225: error: expected '=', ',', ';', 'asm' or
 '__attribute__' before 'genimg_get_image'
 include/image.h:228: error: expected declaration specifiers or '...'
 before 'ulong'
 include/image.h:228: error: expected declaration specifiers or '...'
 before 'ulong'
 include/image.h:292: error: expected '=', ',', ';', 'asm' or
 '__attribute__' before 'image_get_data'
 include/image.h:301: error: expected '=', ',', ';', 'asm' or
 '__attribute__' before 'image_get_image_end'
 include/image.h:337: error: expected declaration specifiers or '...'
 before 'ulong'
 include/image.h:340: error: expected '=', ',', ';', 'asm' or
 '__attribute__' before 'getenv_bootm_low'
 include/image.h:341: error: expected '=', ',', ';', 'asm' or
 '__attribute__' before 'getenv_bootm_size'
 include/image.h:342: error: expected declaration specifiers or '...'
 before 'ulong'
 include/image.h:362: error: expected '=', ',', ';', 'asm' or
 '__attribute__' before 'image_multi_count'
 include/image.h:363: error: expected declaration specifiers or '...'
 before 'ulong'
 include/image.h:364: error: expected declaration specifiers or '...'
 before 'ulong'
 include/image.h:364: error: expected declaration specifiers or '...'
 before 'ulong'
 src/phase2.c:34: error: expected declaration specifiers or '...' before
 'uint'
 src/phase2.c: In function 'try_this_kernel':
 src/phase2.c:457: error: too many arguments to function 'the_kernel'
 make: *** [src/phase2.o] Error 1
 }}}

 Ok, lets add ulong/uint/ushort manually to qi.h and rebuild...

 {{{
 root at booph:~/devel/misc/qi (master)# make CPU=s3c6410 CROSS_PATH=
 CROSS_COMPILE= COMPILER_LIB_PATH_PRE= COMPILER_LIB_PATH=
 cc1: warnings being treated as errors
 src/drivers/glamo-mmc.c: In function 'mmc_cmd':
 src/drivers/glamo-mmc.c:188: error: suggest parentheses around operand of
 '!' or change '&' to '&&' or '!' to '~'
 make: *** [src/drivers/glamo-mmc.o] Error 1
 }}}

 Ok, lets remove -Werror from the Makefile, that is never a good idea due
 to compilers getting stricter over time.

 {{{
 root at booph:~/devel/misc/qi (master)# make CPU=s3c6410 CROSS_PATH=
 CROSS_COMPILE= COMPILER_LIB_PATH_PRE= COMPILER_LIB_PATH=
 src/drivers/glamo-mmc.c: In function 'mmc_cmd':
 src/drivers/glamo-mmc.c:188: warning: suggest parentheses around operand
 of '!' or change '&' to '&&' or '!' to '~'
 make -C tools
 make[1]: Entering directory `/home/root/devel/misc/qi/tools'
 gcc -Wall    mkudfu.c   -o mkudfu
 make[1]: Leaving directory `/home/root/devel/misc/qi/tools'
 mkdir -p image
 src/fs/ext2.o: In function `ext2fs_read_inode':
 /home/root/devel/misc/qi/src/fs/ext2.c:235: undefined reference to
 `__aeabi_uidiv'
 /home/root/devel/misc/qi/src/fs/ext2.c:235: undefined reference to
 `__aeabi_uidivmod'
 src/fs/ext2.o: In function `ext2fs_read_file':
 /home/root/devel/misc/qi/src/fs/ext2.c:490: undefined reference to
 `__aeabi_uidiv'
 /home/root/devel/misc/qi/src/fs/ext2.c:490: undefined reference to
 `__aeabi_idiv'
 /home/root/devel/misc/qi/src/fs/ext2.c:490: undefined reference to
 `__aeabi_uidivmod'
 /home/root/devel/misc/qi/src/fs/ext2.c:490: undefined reference to
 `__aeabi_idivmod'
 make: *** [image/qi-s3c6410-master_36bb5c03756268ff.udfu] Error 1
 }}}

 Hmm, intarwebs say we need libgcc, which is installed:

 {{{
 root at booph:~/devel/misc/qi (master)# ls -l /usr/lib/gcc/*/*/libgcc.a
 -rw-r--r-- 1 root root 139K Nov  5 15:21 /usr/lib/gcc/arm-linux-
 gnueabi/4.3.4/libgcc.a
 -rw-r--r-- 1 root root 139K Nov  5 15:21 /usr/lib/gcc/arm-linux-
 gnueabi/4.3/libgcc.a
 -rw-r--r-- 1 root root 156K Dec 16 23:11 /usr/lib/gcc/arm-linux-
 gnueabi/4.4.2/libgcc.a
 -rw-r--r-- 1 root root 156K Dec 16 23:11 /usr/lib/gcc/arm-linux-
 gnueabi/4.4.3/libgcc.a
 -rw-r--r-- 1 root root 156K Dec 16 23:11 /usr/lib/gcc/arm-linux-
 gnueabi/4.4/libgcc.a
 root at booph:~/devel/misc/qi (master)# gcc --version
 gcc (Debian 4.4.2-5) 4.4.2
 Copyright (C) 2009 Free Software Foundation, Inc.
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
 PURPOSE.

 }}}

 Aha, we need the right dir in COMPILER_LIB_PATH...

 {{{
 # make CPU=s3c6410 CROSS_PATH= CROSS_COMPILE= COMPILER_LIB_PATH_PRE=
 COMPILER_LIB_PATH=/usr/lib/gcc/arm-linux-gnueabi/4.4/mkdir -p image
 ===> DFU Trailer information:
 Trailer Vers.:  1
 Trailer Length: 16
 VendorID:       0x1d50
 ProductID:      0x5119
 HW Revision:    0x0350
 }}}

 Now lets try the next CPU:

 {{{
 root at booph:~/devel/misc/qi (master)# make clean && make CPU=s3c2442
 CROSS_PATH= CROSS_COMPILE= COMPILER_LIB_PATH_PRE=
 COMPILER_LIB_PATH=/usr/lib/gcc/arm-linux-gnueabi/4.4/
 make[1]: Entering directory `/home/root/devel/misc/qi/tools'
 make[1]: Leaving directory `/home/root/devel/misc/qi/tools'
 src/drivers/glamo-mmc.c: In function 'mmc_cmd':
 src/drivers/glamo-mmc.c:188: warning: suggest parentheses around operand
 of '!' or change '&' to '&&' or '!' to '~'
 src/cpu/s3c2442/s3c24xx-mci.c:362: error: expected '=', ',', ';', 'asm' or
 '__attribute__' before 'rca'
 src/cpu/s3c2442/s3c24xx-mci.c: In function 's3c24xx_mmc_init':
 src/cpu/s3c2442/s3c24xx-mci.c:539: error: 'rca' undeclared (first use in
 this function)
 src/cpu/s3c2442/s3c24xx-mci.c:539: error: (Each undeclared identifier is
 reported only once
 src/cpu/s3c2442/s3c24xx-mci.c:539: error: for each function it appears
 in.)
 make: *** [src/cpu/s3c2442/s3c24xx-mci.o] Error 1
 }}}

 Hmm, time to define u_int*_t in qi.h...

 {{{
 root at booph:~/devel/misc/qi (master)# make clean && make CPU=s3c2442
 CROSS_PATH= CROSS_COMPILE= COMPILER_LIB_PATH_PRE=
 COMPILER_LIB_PATH=/usr/lib/gcc/arm-linux-gnueabi/4.4/
 make[1]: Entering directory `/home/root/devel/misc/qi/tools'
 make[1]: Leaving directory `/home/root/devel/misc/qi/tools'
 src/drivers/glamo-mmc.c: In function 'mmc_cmd':
 src/drivers/glamo-mmc.c:188: warning: suggest parentheses around operand
 of '!' or change '&' to '&&' or '!' to '~'
 make -C tools
 make[1]: Entering directory `/home/root/devel/misc/qi/tools'
 gcc -Wall    mkudfu.c   -o mkudfu
 make[1]: Leaving directory `/home/root/devel/misc/qi/tools'
 mkdir -p image
 ===> DFU Trailer information:
 Trailer Vers.:  1
 Trailer Length: 16
 VendorID:       0x1d50
 ProductID:      0x5119
 HW Revision:    0x0350
 }}}

 Now onto the last CPU...

 {{{
 root at booph:~/devel/misc/qi (master)# make clean && make CPU=s3c2410
 CROSS_PATH= CROSS_COMPILE= COMPILER_LIB_PATH_PRE=
 COMPILER_LIB_PATH=/usr/lib/gcc/arm-linux-gnueabi/4.4/
 make[1]: Entering directory `/home/root/devel/misc/qi/tools'
 make[1]: Leaving directory `/home/root/devel/misc/qi/tools'
 src/drivers/glamo-mmc.c: In function 'mmc_cmd':
 src/drivers/glamo-mmc.c:188: warning: suggest parentheses around operand
 of '!' or change '&' to '&&' or '!' to '~'
 make -C tools
 make[1]: Entering directory `/home/root/devel/misc/qi/tools'
 gcc -Wall    mkudfu.c   -o mkudfu
 make[1]: Leaving directory `/home/root/devel/misc/qi/tools'
 mkdir -p image
 ===> DFU Trailer information:
 Trailer Vers.:  1
 Trailer Length: 16
 VendorID:       0x1457
 ProductID:      0x5119
 HW Revision:    0x0240
 }}}

 Nice, it finally built. Patch attached for the minor changes to fix the
 above and another to add a short note about how to build without a cross-
 compiler. The later could probably do with how to

 It would be nice if the Qi build system could automatically detect the
 right -L when building on armel with the native GCC.

-- 
Ticket URL: <https://docs.openmoko.org/trac/ticket/2325>
docs.openmoko.org <http://docs.openmoko.org/trac/>
openmoko trac


More information about the openmoko-kernel mailing list