ltib每次执行后会在其目录下生成rootfs目录,并以其为基础生成rootfs.ext2.gz文件,而litb自带的QT库又太老,所以想到按照飞凌的《OKMX6X-S2-Qt4.8.5移植手册-V1.1-2016-08-18.pdf》进行QT库的移植,在飞凌的ubuntu虚拟机里libts和QT都已经解压并放到对应的目录了,所以剩下的工作就是把相应的文件和脚本放到rootfs/目录并生成新的根文件系统。(注意手册有多处空格笔误,以及目录名前后矛盾——qt4.8.5/和forlinx_qt4.8/)。自己写了个脚本qt_rootfs.sh,用来把QT相关的库文件放到rootfs目录:
#config tslib and QT4.8.5 in rootfs
#by Saviour 2017.12.11
#tslib
cp -ar /usr/local/arm/tslib/lib/* rootfs/usr/lib
cp -ar /usr/local/arm/tslib/bin/* rootfs/usr/bin
cp -ar /usr/local/arm/tslib/etc/* rootfs/etc
cp qt_env.sh rootfs/etc/rc.d/
#QT 4.8.5
mkdir -p rootfs/opt/forlinx_qt4.8/lib/fonts
mkdir -p rootfs/opt/forlinx_qt4.8/bin
cp -ar /usr/local/freescale/qt4.8.5/lib/libQt* rootfs/opt/forlinx_qt4.8/lib
cp -ar /usr/local/freescale/qt4.8.5/lib/fonts/* rootfs/opt/forlinx_qt4.8/lib/fonts
cp -ar /usr/local/freescale/qt4.8.5/demos/embeddeddialogs/embeddeddialogs rootfs/opt/forlinx_qt4.8/bin
#cp app.sh rootfs/etc/rc.d
cp pack-rootfs.sh rootfs
其中,qt_env.sh根据手册的内容改写(手册设备名有误):
#!/bin/sh
##tslib
export TSLIB_TSDEVICE=/dev/input/event1
export TSLIB_CONFFILE=/etc/ts.conf
export TSLIB_PLUGINDIR=/usr/lib/ts
export POINTERCAL_FILE=/etc/pointercal
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
##qt4.8.5
export QTDIR=/opt/forlinx_qt4.8
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export QT_PLUGIN_PATH=$QTDIR/plugins
export QT_QWS_FONTDIR=$QTDIR/lib/fonts
export QWS_MOUSE_PROTO=tslib:/dev/input/event1
export QWS_DISPLAY="linuxfb:mmWidth50:mmHeight130:0"
export QWS_SIZE=800x480
手册中的app.sh没用,因为我也不打算移植飞凌的例程。至于打包生成可烧写的文件的方式有两种:
1)在rootfs/目录下用pack_rootfs.sh脚本在本目录生成rootfs.tar.bz2:
#!/bin/sh
mknod dev/console c 5 1
mknod dev/null c 1 3
mknod dev/tty c 5 0
chmod 666 dev/console
chmod 666 dev/null
chmod 666 dev/tty
chmod 777 etc
chmod 777 tmp
if [ -f ./rootfs.tar.bz2 ]; then
rm rootfs.tar.bz2
fi
tar -jcvf rootfs.tar.bz2 *
2)用脚本make_rootfs.sh在litb生成的rootfs.ext2.gz基础上于litb/目录下生成rootfs.tar.bz2
#make rootfs.tar.bz2
#2017.11.06 by Saviour
gunzip rootfs.ext2.gz
sudo mount -o loop -t ext2 rootfs.ext2 tool/
cd tool/
sudo tar -jcvf ../rootfs.tar.bz2 *
cd ..
sudo umount tool
开机之后到/etc/rc.d/执行source qt_env.sh就可以运行QT程序了。