免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1594 | 回复: 0

uboot for zaurus的编译 [复制链接]

论坛徽章:
2
数据库技术版块每日发帖之星
日期:2015-09-08 06:20:00数据库技术版块每日发帖之星
日期:2015-12-13 06:20:00
发表于 2009-05-28 01:05 |显示全部楼层

                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的源码
http://ftp.nluug.nl/ftp/pub/os/Linux/distr/pdaxrom/src/u-boot-2006-04-18-1106.tar.bz2http://ftp.nluug.nl/ftp/pub/os/Linux/distr/pdaxrom/download/u-boot/u-boot-2006-04-18-1106.diff.bz2
下载后在当前目录解压上面2个压缩包,并在原始版uboot的基础上打上补丁。使用下面的命令
patch -p0 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.
               
               
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/72988/showart_1946637.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP