精通init ramfs构建step by step (十)
二十九、toolchain 在init ramfs中使用uclibc库,关键是构建uclibc的工具链toolchain.构建uclibc 的 toolchain 有两种主要方式:(1)用buildroot工具( http://buildroot.uclibc.org/)自动构建,这也是uclibc的官方标准做法.(2)用CLFS Embedded手册的方法手工创建.目前CLFS Embedded还在开发中,可在http://cross-lfs.org/view/clfs-embedded/x86/中查阅. 我们简单地说明用buildroot工具构建uclbic的toolchain的步骤: (1)获取buildroot. 推荐用svn命令从它的版本库中下载: svn co svn://uclibc.org/trunk/buildroot 要求使用svn命令,需要先安装subversion软件包.下载过程中,可能会出现连接异常中断的情况,这时重新执行上述命令,继续进行下载,有可能要重复多次. (2)配置buildroot 我们只是创建toolchain,需要做相应的配置.在buildroot的顶层目录下,执行 make menuconfig 命令,在缺省配置的基础上做如下配置 Target Architecture: i386 Target Architecture Variant: i686 Package Selection for the target: 取消BusyBox的选项(缺省是选中的) Target filesystem options: 取消 ext2 root filesystem(缺省是选中的) Toolchain --> Toolchain type: Buildroot toolchain (3)编译 执行 make 命令,buildroot工具会自动下载所需要的源文件并自动编译,等一两个小时后,toolchain就编译好了.编译好的toolchain位于 buildroot/build_i686/staging_dir/usr/bin/ 目录下.工具命令的前缀是 i686-linux- . 三十、编译Busybox静态连接uclibc库 一般而言,使用uclibc库是为了把它静态连接到busybox中.具体步骤是: (1)把uclibc toolchain的目录添加到PATH中. 在~/.bash_profile文件中添加: #set PATH so it includes uclibc toolchain if it exist if [ -d ~/buildroot/build_i686/staging_dir/usr/bin ] ; then PATH="${PATH}":~/buildroot/build_i686/staging_dir/usr/bin fi (2)配置busybox静态连接库. 在busybox的配置界面中,选择: Build Options --> Build BusyBox as a static binary (no shared libs)
(3)编译 执行 make CROSS_COMPILE=i686-linux- 命令“交叉编译”busybox. 编译生成的是静态连接的可执行文件,不需要在init ramfs中拷贝库文件. 三十一、用buildroot自动构建init ramfs buildroot工具实际是一个功能强大的根文件系统构建工具,它以uclibc和busybox作为系统构建的基础,toolchain只是它构建系统的中间产品.init ramfs是一种特殊的根文件系统,当然也可以用buildroot工具自动构建,下面是构建方法的简要描述: (1)配置 在buildroot的配置界面下做如下的配置: Package Selection for the target: 选择 Busybox Run Busybox''s own full installation Use minimal target skeleton Target filesystem options --> cpio the root filesystem --> comprassion method: gzip (2)编译 执行 make 命令,进行编译. (3)输出 构建好的cpio文件是 buildroot/binaries/rootfs.i686.cpio.gz 同一目录下还包含一个未压缩的文件:rootfs.i686.cpio 构建目录则是 buildroot/project_build_i686/uclibc/root 可以在这个目录下对原始的init ramfs进行修改调整,然后自己用cpio命令打包生成新的init ramfs. (4)调整 直接用buildroot生成的root.i686.cpio.gz作为init ramfs,运行时会出现
|
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |