• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

uClinux内核编译

发布: 2007-7-04 12:06 | 作者: admin | 来源:  网友评论 | 查看: 41次 | 进入软件测试论坛讨论

领测软件测试网 因为别人都给你做好了各种准备,所以内核编译这项看似繁琐的事情变得异常简单...

终于successful 了,虽然还不知道为什么要那么改,疑问留着一点点解决吧.
这里用的源代码是uClinux-armsys-050101.tar.gz,可以到杭州立宇泰网站查找下载.
因为采用ARMSYSB0这块板子,处理器是SAMSUNG的S3C44B0X,所以要针对这个平台修改uClinux源代码.比如SDRAM的起始地址是0x0c 000000,flashROM的起始地址是0x00000000,还有好多,要是一个一个找的话真是太累了,幸好lyt提供了一个补丁uClinux-20040408-ARMSYS.patch,只需要简单的执行一个patch -p1<uClinux-20040408-ARMSYS.patch命令就OK了.本来也是这么想的,也是这个做的.但每次patch都提示patch文件过期,去lyt网站一看说这是最新的补丁了.耽误了一段时间又去他们的bbs,才发现这个补丁是针对uClinux的发行版本的,其实uClinux-armsys-050101.tar.gz已不需要再打补丁了.晕,说了一堆废话.
将uClinux-armsys-050101.tar.gz直接解压解压缩就可以了,当然是在Linux下,在windows下可能发生一些错误 .终端输入
tar xzvf uClinux-armsys-050101.tar.gz,在当前目录下生成uClinux-dist文件夹.
cd uClinux-dist #进入uClinux-dist目录  
make menuconfig#进入内核配置,主要应用方向键,Esc,[Y],回车等根据需要进行内核的裁减,这里有一个疑问,要是在库选择时采用uC-libc就不会出现后面的问题;要是选择uClibc那到内核编译make user_only会出问题,提示出错(如果没有作一定改动的话).
make  dep #寻找依存关系
make  clean[可选] #清除以前构造内核时生成的所有目标文件,模块文件和一些临时文件
make lib_only #编译库文件
make user_only #编译用户应用程序文件
就是这一步令我踌躇不前,到该命令执行一段时间后出现错误了:
...
/home/Jiang/Downloads/uClinux-dist
passwd.elf2flt: In function `main':
/home/Jiang/Downloads/uClinux-dist/user/login/passwd.c:123: undefined reference to `crypt_old'
collect2: ld returned 1 exit status
make[2]: *** [passwd] 错误 1
make[2]: Leaving directory `/home/Jiang/Downloads/uClinux-dist/user/login'
make[1]: *** [all] 错误 2
make[1]: Leaving directory `/home/Jiang/Downloads/uClinux-dist/user'
make: *** [user_only] 错误 2

可能并不是相同的文件,但只要使用了它提到的未定义引用'crypt_old',就会出错.打开passwd.c看到有一个条件编译
#ifdef OLD_CONFIG_PASSWORDS
#include <crypt_old.h>
#endif
想想应该是OLD_CONFIG_PASSWORDS没有定义,也不知道定义在哪个文件夹的*.后来干脆就mask这个条件编译,直接把
#include <crypt_old.h>移了出来,其它文件也作类似处理.经过再次编译,还是出错...
都已经第二天了,还没搞出来,要辜负boss了...网上苦苦寻觅,终于觅得良方,只需要在user/下的makefile增加LIBCRYPT  +=-lcrypt_old一句就OK了.
这一步过后到后面就一马平川了,make romfs,生成romfs文件系统;
make image  生成映象文件,这时可能提示出现两个错误,这是因为第一次编译时还没有romfs.o这个文件,如果再次编译就没有问题了.
最后make,大约几分钟时间.
编译完成后会在/images目录下看到三个文件image.rom,image.ram和romfs.img,接下去的事情就是将内核文件烧入到板子了..

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网