uboot for zaurus的编译
skykiker
2009/5/28
高版本pdaxrom(比如r198)使用uboot进行引导。本文介绍一下这个用在zaurus上的pdaxrom修订版的uboot的编译过程。
1)建立交叉编译环境
本文是在Windows上建立的交叉编译环境。以下就以Windows为例说明。Linux平台的配置方法也是大同小异。
1.1) 安装cygwin
cygwin的安装路径中最好不要有空格。cygwin中至少安装以下工具
gcc
patch
make
binutils
1.2) 安装ARM-GCC交叉编译器
安装ARM-GCC交叉编译器,比如:bu-2.15_gcc-3.4.3-c-c++-java_nl-1.12.0_gi-6.1.exe。
注意安装路径中不能有空格,否则后面编译uboot时可能会报下面的错误。
stdarg.h: No such file or directory
安装过程中,安装程序会提示是否安装cygwin DLL。切记不要安装,否则会和之前安装的cygwin冲突。
2)下载zaurus用的uboot的源码
下载后在当前目录解压上面2个压缩包,并在原始版uboot的基础上打上补丁。使用下面的命令
patch -p0
3)修改几个必要的文件
3.1) 设置交叉编译程序
u-boot-2006-04-18-1106/Makefile:
ifeq ($(ARCH),arm)
CROSS_COMPILE = armv5tel-linux-
endif
==>
ifeq ($(ARCH),arm)
CROSS_COMPILE = arm-elf-
endif
3.2)回避一处编译错误
u-boot-2006-04-18-1106/examples/Makefile:
all: .depend $(OBJS) $(LIB) $(SREC) $(BIN)
==>
all: .depend $(OBJS) $(LIB) hello_world $(SREC) $(BIN)
上面的修改是为了回避后面编译时可能发生的下面的错误。
make -C examples all
make[1]: Entering directory `/cygdrive/e/fromx24/chj/microLinux/zaurus/u-boot-20
06-04-18-1106/examples'
arm-elf-ar crv libstubs.a stubs.o
r - stubs.o
make[1]: *** No rule to make target `hello_world.srec', needed by `all'. Stop.
make[1]: Leaving directory `/cygdrive/e/fromx24/chj/microLinux/zaurus/u-boot-200
6-04-18-1106/examples'
make: *** [examples] Error 2
可能是这个Makefile使用了我安装的make程序不支持的特性,其它环境中不一定发生。不过改了也不会有什么坏处。
4)编译
cd u-boot-2006-04-18-1106
make akita_config
make all
5)将uboot导入到eclipse集成开发环境
前面是在命令行下编译的,下面介绍将其导入到eclipse中的步骤。
5.1)安装eclipse+CDT插件
这个应该不用多讲的啦。
5.2)导入uboot项目
在前面的u-boot-2006-04-18-1106目录下建一个eclipse的C项目。然后对项目属性做一些修改。具体如下:
C/C++ Build->Builder settings
取消自动生成Makefile的选项(Generate Makefiles automatically)
C/C++ Build->Environment
把PWD环境变量(如果有的话)的值设置为空,接着试着编译一下,应该没什么问题了。
将PWD属性设置为空的原因是eclipse设置的PWD中带有冒号(比如C:/xxxx),而Makefile会使用PWD环境变量,如果PWD环境变量不为空的话。
TOPDIR := $(shell if [ "$$PWD" != "" ]; then echo $$PWD; else pwd; fi)
结果会导致后面183行出项2个以上冒号(还有一个冒号在变量LDSCRIPT中)。
u-boot: depend version $(SUBDIRS) $(OBJS) $(LIBS) $(LDSCRIPT)
于是编译时会出现下面的错误。
make all
Makefile:183: *** multiple target patterns. Stop.
阅读(4082) | 评论(0) | 转发(0) |