Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2945196
  • 博文数量: 199
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 4126
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-06 19:06
个人简介

半个PostgreSQL DBA,热衷于数据库相关的技术。我的ppt分享https://pan.baidu.com/s/1eRQsdAa https://github.com/chenhuajun https://chenhuajun.github.io

文章分类

全部博文(199)

文章存档

2020年(5)

2019年(1)

2018年(12)

2017年(23)

2016年(43)

2015年(51)

2014年(27)

2013年(21)

2011年(1)

2010年(4)

2009年(5)

2008年(6)

分类: LINUX

2009-05-28 01:05:44

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) |
0

上一篇:拖延症

下一篇:Zaurus的4种操作模式详解

给主人留下些什么吧!~~