2010年6月20日 星期日

mini2440 study (cross complie tool chain)

1. 下載cross compiler
使用code sourcery所提供的 toolchains,需注意的是,這個 toolchains的版本是 arm-2009q1-203-arm-none-linux-gnueabi-i686-pc-linux-gnu,這個版本對於 mini2440的 CPU(arm920t)來說太新,因為 arm920t是 ARMv4T的架構,是幾年前的產品了,所以需要對 toolchains做點修改。

2. 下載後,找個地方解壓縮
# tar -jxvf arm-2009q1-203-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 -C /opt/

3. 新增環境變數:
# export PATH=$PATH:/opt/usr/local/arm/4.3.3/bin

4. 修改變數名,將 "arm-none-linux-gnueabi-"開頭改成 "arm-linux-"開頭
ln -s arm-none-linux-gnueabi-gdbtui arm-linux-gdbtui
ln -s arm-none-linux-gnueabi-addr2line arm-linux-addr2line
ln -s arm-none-linux-gnueabi-gprof arm-linux-gprof
ln -s arm-none-linux-gnueabi-ar arm-linux-ar
ln -s arm-none-linux-gnueabi-as arm-linux-as
ln -s arm-none-linux-gnueabi-nm arm-linux-nm
ln -s arm-none-linux-gnueabi-ld arm-linux-ld
ln -s arm-none-linux-gnueabi-c++ arm-linux-c++
ln -s arm-none-linux-gnueabi-objcopy arm-linux-objcopy
ln -s arm-none-linux-gnueabi-c++filt arm-linux-c++filt
ln -s arm-none-linux-gnueabi-cpp arm-linux-cpp
ln -s arm-none-linux-gnueabi-ranlib arm-linux-ranlib
ln -s arm-none-linux-gnueabi-objdump arm-linux-objdump
ln -s arm-none-linux-gnueabi-readelf arm-linux-readelf
ln -s arm-none-linux-gnueabi-size arm-linux-size
ln -s arm-none-linux-gnueabi-gcov arm-linux-gcov
ln -s arm-none-linux-gnueabi-strings arm-linux-strings
ln -s arm-none-linux-gnueabi-gdb arm-linux-gdb
ln -s arm-none-linux-gnueabi-strip arm-linux-strip
ln -s arm-none-linux-gnueabi-sprite arm-linux-sprite


(重點)5. 在 /opt/usr/local/arm/4.3.3/bin/ 資料夾裡新增三個 shell script,將 toolchains降為 armv4t版本
arm-linux-g++的shell script內容:
#!/bin/sh
arm-none-linux-gnueabi-g++ -march=armv4t $*


arm-linux-gcc的shell script內容:
#!/bin/sh
arm-none-linux-gnueabi-gcc -march=armv4t $*


arm-linux-gcc-4.3.3的shell script內容:
#!/bin/sh
arm-none-linux-gnueabi-gcc-4.3.3 -march=armv4t $*


6. 修改權限
# chmod +x arm-linux-g++
# chmod +x arm-linux-gcc
# chmod +x arm-linux-gcc-4.3.3


7. 查看是否成功
# arm-linux-gcc -v

沒有留言:

張貼留言