ARM-Linux-gcc4.3.2交叉編譯錯誤問題

本博文針對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目錄下面。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章