Rockbox Development > Starting Development and Compiling

Can't compile latest build for Gigabeat F/X

(1/2) > >>

Bill Tuttle:
Starting yesterday (though I hadn't tried for 2-3 days) I can't build successfully for the Gigabeat F/X. I even deleted the apps and firmware directories, updated from SVN and tried. I have no patches installed. Here are the errors I'm getting:
LD rockbox.elf
/rockbox/build/librockbox.a(lcd-as-memframe.o): In function `lcd_write_yuv420_lines':
target/arm/lcd-as-memframe.S:(.icode+0xe8): multiple definition of `lcd_write_yuv420_lines'
/rockbox/build/librockbox.a(lcd-as-imx31.o):target/arm/imx31/gigabeat-s/lcd-as-imx31.S:(.icode+0x0): first defined here
/usr/local/arm-elf/lib/gcc/arm-elf/4.0.3/../../../../arm-elf/bin/ld: Warning: size of symbol `lcd_write_yuv420_lines' changed from 540 in /rockbox/build/librockbox.a(lcd-as-imx31.o) to 468 in /rockbox/build/librockbox.a(lcd-as-memframe.o)
collect2: ld returned 1 exit status
make[1]: *** [/rockbox/build/apps/rockbox.elf] Error 1
make: *** [build] Error 2

Can anyone else get the current build to complete for the GB? Thanks.

scorche:
Well, it is likely on your end, as the build servers do fine.  A few steps you can try:

make clean
svn revert -R
deleting the entire directory and re-downloading
checking cross compilers

Bill Tuttle:
Thanks - I figured it must be on my end, I just wasn't sure what. I had deleted the source and redownloaded thinking it was a patch problem, but that didn't seem to help. I had forgotten about make clean and hadn't cleared out the build directory. That was probably the problem. It's building now. I'll check back when its done. Thanks.

   ---Bill Tuttle Gryphon's Moon

Bill Tuttle:
That was it - can't believe I forgot the clean. Thanks.

scharkalvin:
If a build fails in the link phase, the error would be in not doing a make clean.
If it failed in the compile phase, then make clean probably would not help.

Note on make files:
The need for a make clean is to insure that all the symbols get resolved during link.   If the make file used complete dependancies for each object target (ie: all header files and all included header files) to force the recompile of any object whose source or included headers had changed then a make clean would not be needed.  That means writing a target rule for each object.  With lots of object files in a build this typically isn't done and a general case (source to object rule) is used.  I usually only write specific object build rules for targets that include header files that are constantly being changed (such as the header file that contains the version string....)

Navigation

[0] Message Index

[#] Next page

Go to full version