当我尝试编译u-boot时,我收到以下错误:
此链接解释了错误:
http://www.denx.de/wiki/DULG/SourceObjectHasEABIVersion4ButTargetHasEABIVersion0
但是,我不知道在源代码中需要更改的位置。
答案 0 :(得分:1)
我改变了行
PLATFORM_CPPFLAGS +=$(call cc-option,-mapcs-32,-mabi=apcs-gnu)
在cpu / arm926ejs / config.mk中
PLATFORM_CPPFLAGS +=$(call cc-option,-mapcs-32,-mabi=aapcs-linux)
这一次,我收到以下错误:
/home/ubuntu/Desktop/lpc3250/toolchain-final-armv5l-timesys-linux-uclibcgnueabi/bin/../lib/gcc/armv5l-timesys-linux-uclibcgnueabi/4.5.3/libgcc.a(_dvmd_lnx.o): In function `__aeabi_ldiv0':
/home/timesys/work/ea313x_factory/factory-HEAD/build_armv5l-timesys-linux-uclibcgnueabi/gcc-4.5.3/gcc-4.5.3/libgcc/../gcc/config/arm/lib1funcs.asm:1265: undefined reference to `raise'
/home/ubuntu/Desktop/lpc3250/toolchain-final-armv5l-timesys-linux-uclibcgnueabi/bin/../lib/gcc/armv5l-timesys-linux-uclibcgnueabi/4.5.3/libgcc.a(bpabi.o):(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'
/home/ubuntu/Desktop/lpc3250/toolchain-final-armv5l-timesys-linux-uclibcgnueabi/bin/../lib/gcc/armv5l-timesys-linux-uclibcgnueabi/4.5.3/libgcc.a(_divdi3.o):(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'
/home/ubuntu/Desktop/lpc3250/toolchain-final-armv5l-timesys-linux-uclibcgnueabi/bin/../lib/gcc/armv5l-timesys-linux-uclibcgnueabi/4.5.3/libgcc.a(_udivdi3.o):(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'
似乎问题与libgcc.a有关。
我学到的是u-boot只用很少的编译器编译。
链接
http://communities.mentor.com/community/cs/archives/arm-gnu/msg02478.html
将我的问题解释为
这是一个需要修复的简单问题。首先你需要了解这一点 ARM EABI和ARM GNU / Linux工具链是不同的。 Linux内核 和应用程序是用ARM GNU / Linux工具链编译的 bootloaders是使用ARM EABI工具链编译的。
U-boot是一个裸机应用程序,因此使用ARM EABI 工具链。这是编译U-boot和其他非Linux的最佳方法 应用。可以使用Linux工具链编译U-boot 但不推荐。