bate2000的个人空间 https://blog.eetop.cn/bate [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

VOD视频点播系统(六)

已有 1417 次阅读| 2008-3-25 23:37 |个人分类:VOD

 

2.2.3 根文件系统

 移植过程:

1busybox编译移植;

交叉编译busybox

busybox的源码可以从http://www.busybox.net/downloads/下载,这里我们下载一个1.5.0版本的源码。

我们在配置busybox的时候是基于默认配置之上来配置的;先make defconfig就是把busybox配置成默认,然后再make menuconfig来配置busybox

说明我们在配置一个源代码包之前可以先阅读源码包目录下的READMEINSTALL文件以及Makefile的注释部分也可以到http://www.busybox.net网站以获取帮助。

http://www.busybox.net/FAQ.html#configure的第二个问题2 How do I configure busybox?有介绍怎么去配置。

 

#解压

tar jxvf busybox-1.5.0.tar.ba2

mv busybox-1.5.0 busybox

cd busybox

#添加交叉工具链

export PATH=/usr/local/arm/3.3.2/bin:$PATH

 

make defconfig

make menuconfig

#配置时,我们基于默认配置,再配置它为静态编译,安装时不要/usr路径,把Miscellaneous Utilities #下的“taskset”选项去掉,不然会出错。

#如下:

Busybox setting

              ->builds options

                     ->[*] build busybox as a static binary

              ->installitation options

                     ->[*] don’t use /usr

Miscellaneous Utilities ―>

              [  ] taskset

保存退出。

 

#编译安装

make ARCH=arm CROSS_COMPILE=arm-linux- CONFIG_PREFIX=/root/build_rootfs/rootfs all install

ARCH指定平台

CROSS_COMPILE指定交叉编译

CONFIG_PRRFIX指定安装的路径

 

#把安装的linuxrc删除

cd /root/build_rootfs/rootfs

rm linuxrc

 

2bash交互程序移植;

根据启动流程,linux内核启动的最后要启动一个用户进程,这个进程一般是“init程序,我们也可以自己指定一个进程来作为系统启动的第一个程序。

 

步骤:

1修改bootloader传递的初始化参数,指定linux系统启动的第一个进程:

bootloader传递给内核的初始化参数里有个“commandine”参数,我们把其中的 “init=/linuxrc”改为”init=/bin/bash”

如果我们使用的是u-boot作为开发板的bootloader,就在u-boot的提示符下输入:

     setenv bootargs root=/dev/mtdblock2 init=/bin/bash console=ttySAC0,115200

       如果使用GEC2410开发板自带的bois程序作为bootloader,就修改bois程序源码中的“\src\nand.c” 文件的commandline参数。

 

2 交叉编译bash

Bash的源码可以从ftp://ftp.gnu.org/gnu/bash/上下载

步骤如下:

mkdir /root/build_bash

cd /root/build_bash

tar zxvf bash-3.2.tar.gz

mv bash-3.2 bash

cd bash

export PATH=/usr/local/arm/3.3.2/bin:$PATH

./configure - -host=arm-linux –enable-static-link

Make

 

然后把编译生成的bash程序拷贝的目标板根文件系统的/bin目录下。

cp bash /root/build_rootfs/rootfs/bin

 

在根目录下编译一个”.bashre”文件

cd /root/build_rootfs/rootfs

vi .bashrc

内容如下:

#!/bin/sh

echo "Set seaech library in /etc/profile"

export LD_LIBRARY_PATH=/lib

echo "Set user path in /etc/profile"

export PATH=/bin:/sbin:/usr/bin

 

制作映象文件。把映象文件烧写到开发板上。

3mplayer的移植;

a.源代码包选用的MPlayer-1.0pre7.tar.bz2

b.工具链2.95.3的在编译MPlayer-1.0pre7try2这个版本时会有问题,选择3.3.2

c.arm-linux-gcc安装到/usr/local/arm/3.3.2/,并设置环境变量PATH=/usr/local/arm/3.3.2/bin:$PATH

d.交叉编译mplayer

$ ./configure --host-cc=gcc --cc=arm-linux-gcc --target=arm-armv4l-linux --enable-static --prefix=/tmp/mplayer --disable-win32  --disable-dvdread --enable-fbdev --disable-mencoder --disable-live

$ make

e. 试运行mplayer

$ ./mplayer –nosound xxx.avi

    e.拷贝mplayer程序到要构建的根文件系统中。

 

这里注意:以上三个软件(busyboxbashmplayer)的编译都是静态链接的,因此他们的运行不需要动态库。下面我们自己构建GLIBC动态链接库;

4)拷贝C

这里我们需要自己制作一个glibc库,制作glibc动态链接库(主要是用来构建根文件系统的“/lib”目录),主要参考linux移植课程的《4-工具链制作实验》文档,工具链制作的环境是rhel3文档中介绍了交叉工具链的制作过程,制作完工具链后,将工具链里的动态库拷贝到根文件系统里;

拷贝C库参考脚本:(路径是“/usr/local/arm/my-3.3.2/arm-linux/lib”)

layout-grid-align: none" align=left>for file in libc libcrypt libdl libm libnss_dns libnss_files libpthread libresolv libutil

do

cp $file-*.so /root/build_rootfs/rootfs/lib

cp -d $file.so.[*0-9] /root/build_rootfs/rootfs/lib

done

cp -d ld*.so* /root/build_rootfs/rootfs/lib

cp -d libgcc_s*.so* /root/build_rootfs/rootfs/lib

cp -d libstdc++.so* /root/build_rootfs/rootfs/lib

 

cp -d libuuid.so* /root/build_rootfs/rootfs/usr/lib

cp -d libz.so* /root/build_rootfs/rootfs/usr/lib

cp -d libpng*.so* /root/build_rootfs/rootfs/usr/lib

cp -d libjpeg.so* /root/build_rootfs/rootfs/usr/lib 

 

VOD视频点播系统(七)


点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 1

    粉丝
  • 0

    好友
  • 0

    获赞
  • 6

    评论
  • 104

    访问数
关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-26 08:56 , Processed in 0.018798 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部