| |
(5)利用上面制作的交叉工具链移植QTE
一 GUI程序
1 移植Qtopia-
2 vod客户端程序
1 移植Qtopia-
环境:操作系统: red hat as4
交叉工具链:my-
建立工作目录:
mkdir /root/build_qtopia
cd /root/build_qtopia
下载源码:
wget–c http://www.qtopia.org.cn/ftp/mirror/ftp.trolltech.com/qtopia/source/qtopia-free-src-2.2.0.tar.gz
解压源码:
tar zxvf qtopia-free-src-
cd qtopia-free-
修改源码
1 chmod /qtopia/mkspecs/qws/linux-arm-g++/qmake.conf
vi qtopia/mkspecs/qws/linux-arm-g++/qmake.conf
将此行
QMAKE_LIBS_QT = -lqte P
修改为 =9
QMAKE_LIBS_QT = -lqte -lpng -lz -luuid –ljpeg
2 vi qtopia/src/qt/qconfig-qpe.h
加上
#define QT_QWS_IPAQ
#define QT_QWS_IPAQ_RAW
layout-GRID-MODE: char; TEXT-INDENT: -18pt; LINE-HEIGHT: 23pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-line-height-rule: exactly; mso-char-indent-count: -1.5" align=left>3 cp qtopia/src/qt/qconfig-qpe.h qt2/src/tools/qconfig-local.h !
cd qtopia/src/libraries/qtopia
cp custom-linux-ipaq-g++.cpp custom-linux-arm-g++.cpp
cp custom-linux-ipaq-g++.h custom-linux-arm-g++.h
配置编译:
cd /root/build_qtopia/
./configure -qte "-embedded \
-no-xft \
-qconfig local \
-depths 4,8,16,32 \
-no-qvfb \
-system-jpeg \
-gif -release \
-platform. 'linux-g++' \
-xplatform. 'linux-arm-g++'" \
-qpe " -edition pda \
-displaysize 240x320 \
-no-qtopiadesktop -release -platform. 'linux-g++' \
-xplatform. 'linux-arm-g++'"
export PATH=/usr/local/arm/my-
make
make install
编译安装完之后,在qtopia/image/opt/Qtopia目录就是移植到开发板的目录;
(6)vod界面的编写和移植
vod客户端程序主要用Qsocketdevice从服务器端取得影片名称和影片地址,关键代码如下:
刷新列表部分:
而点击播放按钮调用mplayer播放关键代码如以下:
主要是通过fork出一个子进程用execl调用mplayer播放。Mplayer在framebuffer模式下的播放请用mplayer –help察看相关参数。最后将vod客户端通过qte库交叉编译,放入文件系统中去。
举例来说:客户想点播位于192.168.0.1上的matrix.mpeg文件(这个文件应该位于IIS所指定的目录下,如C:\Downloads)先在服务器上执行c:\>server.exe C:\Downloads,而后再目标及上打开vod客户端。与目录服务器进行连接,取得该电影的影片信息以及地址
(http:// 192.168.0.1:80/matrix.mpeg),此时客户点击播放,则vod客户端立即调用mplayer播放器进行播放(即执行mplayer http:// 192.168.0.1:80/matrix.mpeg).此时出现视频画面。
客户端程序的移植参考qtopia移植文档的《Qtopia
(7)编写启动脚本
启动教本和配置文件存放在构建根文件系统的”/etc”目录下,内核启动的最后要启动根文件系统的/sbin/init程序,init程序会读取/etc/inittab文件,根据inittab文件的内容,决定启动软件的流程;
l /etc/inittab文件:
#my inittab file
#first: run the system script. file
::sysinit:/etc/init.d/rcS
#second:run the local script. file
::once:/etc/rc.local
#third run the bash shell prosecc
::respawn:/bin/bash
#restart init process
::restart:/sbin/init
#umount all file system
::shutdown:/bin/umount -a -r