首页>计算机>Linux认证>应用技术>正文
我也来学做嵌入式Linux系统V0.1

www.zige365.com 2007-8-21 16:48:16 点击:发送给好友 和学友门交流一下 收藏到我的会员中心
 让我来看看它究竟做了哪些事情吧:
  
  [root@skynet skynet]# cd tools
  [root@skynet tools]# ls
  bin bin-ccache i386-linux i386-linux-uclibc include info lib libexec man usr
  
  bin:所有的编译工具,如gcc,都在这儿了,只是加了些指定的前缀;
  
  bin-ccache:如果在Toolchain optaion中没有选择对ccache的支持,就没有这一项了;
  
  i386-linux:链接文件;实际指向include
  
  i386-linux-uclibc:uclibc的相关工具;
  
  include:供交叉开发工具使用的头文件;
  
  info:gcc 的info文件;
  
  lib:供交叉开发工具使用的链接库文件;
  
  ……
  
  现在可以把编译工具所在目录XXX/bin添加至PATH了
  
  测试工具链
  
  如果你现在写一个程序,用i386-linux-gcc来编译,运行的程序会告诉你:
  
  ./test: linked against GNU libc
  
  因为程序运行库会寻到默认的/lib:/usr/lib上面去,而我们目前的uclibc的库并不在那里(虽然对于目标机来讲,这是没有错的),所以,也只能暂时静态编译,试试它能否工作了。当然,你也可以在建好根文件系统后,试试用chroot……
  
  第三章 编译内核
  
  本章的工作,是为目标机建立一个合适的内核,对于建立内核,我想有两点值得考虑的:
  
  1、功能上的选择,应该能够满足需要的情况下,尽量地小;
  
  2、小不是最终目的,稳定才是;
  
  所以,最好编译内核前有一份目标机硬件平台清单以及所需功能清单,这样,才能更合理地裁减内核。
  
  准备工具
  
  Linux内核源码,我选用的是Linux-2.4.27.tar.bz2
  
  编译内核
  
  将Linux-2.4.27.tar.bz2拷贝至${PRJROOT}/kernel,解压
  
  #cd linux-2.4.27
  
  //配置
  
  # make ARCH=i386 CROSS_COMPILE=i386-linux- menuconfig
  
  //建立源码的依存关系
  
  # make ARCH=i386 CROSS_COMPILE=i386-linux- clean dep
  
  //建立内核映像
  
  # make ARCH=i386 CROSS_COMPILE=i386-linux- bzImage
  
  ARCH指明了硬件平台,CROSS_COMPILE指明了这是交叉编译,且编译器的名称为i386-linux-XXX,这里没有为编译器指明路径,是因为我前面已将其加入至环境变量PATH。
  
  又是一个漫长的等待……
  
  OK,编译完成,673K,稍微大了点,要移到其它平台,或许得想办法做到512以下才好,回头来想办法做这个工作。
  
  安装内核
  
  内核编译好后,将内核及配置文件拷贝至${PRJROOT}/images下。
  
  # cp arch/i386/boot/bzImage ${PRJROOT}/images/bzImage-2.4.27-rmk5
  # cp vmlinux ${PRJROOT}/images/vmlinux-2.4.27-rmk5
  # cp System.map ${PRJROOT}/images/System-2.4.27-rmk5
  # cp .config ${PRJROOT}/images/2.4.27-rmk5
  
  我采用了后缀名的方式重命名,以便管理多个不同版本的内核,当然,你也可以不用这样,单独为每个版本的内核在images下新建对应文件夹也是可行的。

本新闻共6页,当前在第2页  1  2  3  4  5  6  

我要投稿 新闻来源:chinaitlab 编辑: 作者:
相关新闻
红旗linux认证模拟题库仅供参考(1)
红旗linux认证模拟题库仅供参考(2)
红旗linux认证模拟题库仅供参考(3)
红旗linux认证模拟题库仅供参考(5)
红旗linux认证模拟题库仅供参考(6)
红旗linux认证模拟题库仅供参考(7)