我也来学做嵌入式Linux系统V0.1
|
|
|
|
|
让我来看看它究竟做了哪些事情吧: [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 编辑: 作者: |
|
相关新闻 |
|
|
|
|
|