很是不爽,要搞个ARM还要在linux和m$win来回的切换,虚拟机也麻烦。不切换就不能用AXD来调试
谁叫AXD没有linux的版本呢!?我也幻想着哪时也搞个类似的linux版本来。不过这个还真是有难度
算是还是先把目录的搞定吧。决定用cygwin来搞个ARM的交叉编译环境,在网上找了些资料,然后就
动手了,下面是自己的一些记录,以备忘。
1, 下载crosstool。当前最高版本是0.43。
http://kegel.com/crosstool/crosstool-0.43.tar.gz
2, 解压crosstool,并根据需要修改相关选项
$ tar zxf crosstool-0.43.tar.gz
$ cd crosstool-0.43
$ cp demo-arm-softfloat.sh s3c2440.sh <<== 复制编译脚本。demo-arm.sh是简单的arm;
$ vi s3c2440.sh <<== demo-arm-softfloat.sh是带软浮点的。当然还有其它。
TARBALLS_DIR=$HOME/downloads
RESULT_TOP=/opt/crosstool <<== 编译正功后的安装目录
export TARBALLS_DIR RESULT_TOP
GCC_LANGUAGES=&quot;c,c++&quot; <<== 编译产生的编译器支持哪些语言
export GCC_LANGUAGES
...
eval `cat arm-softfloat.dat gcc-3.4.5-glibc-2.3.6.dat` sh all.sh --notest
...
$ vi arm-softfloat.dat
KERNELCONFIG=`pwd`/arm.config <<== 好像是linux的.config
TARGET=arm-softfloat-linux-gnu <<== 产生最后的工具前缀,如:arm-linux-gcc, arm-linux-ld
TARGET_CFLAGS=&quot;-O&quot; <<== 编译开关,像优化之类
GCC_EXTRA_CONFIG=&quot;--with-float=soft&quot; <<== 编译开关,打开软浮点
GLIBC_EXTRA_CONFIG=&quot;--without-fp&quot; <<== 编译开关,暂时还没明白这个 @_@
$ vi gcc-3.4.5-glibc-2.3.6.dat <<== 此文件放的就是编译需求要的文件,为了加速可以先用
BINUTILS_DIR=binutils-2.15 <<== 多线程下载器(像迅雷等)下载回来并放到目录/下,当
GCC_DIR=gcc-3.4.5 <<== 然crosstool也会判断没有的话就用wget单线程去下载
GLIBC_DIR=glibc-2.3.6 <<== 放到目录/下
LINUX_DIR=linux-2.6.8
LINUX_SANITIZED_HEADER_DIR=linux-libc-headers-2.6.12.0
GLIBCTHREADS_FILENAME=glibc-linuxthreads-2.3.6
3, 下载必要文件并放到目录/下
[url=]ftp://ftp.gnu.org/gnu/binutils/binutils-2.15.tar.bz2[/url]
ftp://ftp.gnu.org/gnu/gcc/gcc-3.4.5/gcc-3.4.5.tar.bz2[url=]ftp://ftp.gnu.org/gnu/gcc/gcc-3.4.5/gcc-3.4.5.tar.bz2[/url][/url]
[url=]ftp://ftp.gnu.org/gnu/glibc/glibc-2.3.6.tar.bz2[/url]
[url=]ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.8.tar.bz2[/url]
[url=]ftp://ftp.gnu.org/gnu/glibc/glibc-linuxthreads-2.3.6.tar.bz2[/url]
[url=]ftp://ftp.lfs-matrix.net/pub/linux-libc-headers/linux-libc-headers-2.6.12.0.tar.bz2[/url]
4, 好,准备好了,开始让机器自动工作吧,你去哪里都可以了,完成它会告诉你done的
$ ./s3c2440.sh
5, done之后默认就会在目录/opt/crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/
下产生需要的工具和文件了
6, 可以删除原来的crosstool-0.43目录了,它占用的空间还真是有够大的
7, OK, 可以用它们来编译u-boot了。网上说只能编译低版本的u-boot,可是刚才我刚过编译成功1.1.6版本
前提是你必要是带softfloat的,不然会出现下面的错误:(也就是说编译u-boot需要浮点数运算)
arm-linux-ld: ERROR: /opt/crosstool/gcc-4.1.0-glibc-2.3.2/arm-linux/lib/gcc/arm-
linux/4.1.0/libgcc.a(_udivdi3.o) uses hardware FP, whereas u-boot uses software FP
8, 暂时就到时了,只是在cygwin上编译正确。当然此种方法也可以让你在其它环境中产生你需要的
交叉编译环境,像linux, BSD, OS X等等,不过我还有试过。
9, 开始工作了,可以直接在M$ Windows上直接编译u-boot然后同时使用H-JTAG和AXD来调试了。
10, 本想移植到u-boot-1.3.3-rc3的,可是就是编译不了。看来还真是只能低版本的了。不过我再改改u-boot看。
fi9 @ shenzhen in 2008-05-18 |