关闭

ARM-Linux-gcc4.3.2交叉编译错误问题

标签: ubuntuarm交叉编译解决方案开放平台
316人阅读 评论(0) 收藏 举报
分类:

本博文针对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(CC)(CFLAGS) -print-libgcc-file-name) -lgcc

修改成:
PLATFORM_LIBS += -L $(shell dirname(CC)(CFLAGS) -print-libgcc-file-name) -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目录下面。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:427次
    • 积分:24
    • 等级:
    • 排名:千里之外
    • 原创:2篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档