本博文针对arm-linux-gcc4.3.2版本的交叉编译工具出现的常见错误,进行了整理,总结。
开发环境: ARM9 (JZ2440开发板)
开放平台: Ubuntu14.04
交叉编译工具: arm-linux-gcc4.3.2
一. 解决 uboot1.1.6在arm-linux-gcc-4.3.2版本下编译错误问题
编译错误如下图:
解决方案:
1.修改Makefile文件中的PLATFORM_LIBS
将 PLATFORM_LIBS += -L $(shell dirname
) -lgcc
修改成: PLATFORM_LIBS += -L $(shell dirname
) -lgcc -lc -L /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib
2.修改 cpu /arm920t/config.mk 文件
将: PLATFORM_CPPFLAGS +=$(call cc-option,-mapcs-32,-mabi=apcs-gnu)
PLATFORM_RELFLAGS +=$(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,))
修改成: PLATFORM_CPPFLAGS +=$(call cc-option,)
PLATFORM_RELFLAGS +=$(call cc-option,$(call cc-option,))
然后
make 100ask24x0_config
make
就可以编译通过啦~!
二. 解决在编译linux时无法生成uImage文件
解决方法: 没有安装mkimage安装包 sudo apt-get install mkimage
三.移植Busybox时注意的问题
1.选择arm-linux- 交叉编译工具
2.启动内核时卡在 Freeing init memory: 140K
解决方法: 在编译linux时make menuconig 选择 内核加上EABI 和OABI的支持
Kernel Features —>
[*] Use the ARM EABI to compile the kernel
[*] Allow old ABI binaries to run with this kernel (EXPERIMENTA
3.Illegal instruction 的解决方法
把/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib目录(也就是你的编译器的库目录)下
的所有文件拷贝到目标板子的根目录的lib目录下就好了。
这样无论你的hello是动态编译还是静态编译,跑起来都不会有Illegal instruction的问题。
4.执行qt的可执行文件时出现错误没有libstdc++库
解决方法: 在/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/lib中复制文件 : libstdc++.so libstdc++.so.6.0.10 libstdc++.so.6 到开发板的lib目录下面。
来源:CSDN
作者:flyoung1994
链接:https://blog.csdn.net/flyoung1994/article/details/51545973