主机编辑器:gcc4.6.1
交叉编译器:mipsel-linux-gcc (龙芯gcc-3.4.6-2f)
开发板:龙芯1b开发板
QT版本:QT4.5.3
1. 下载源码包
从ftp://ftp.qt.nokia.com/qt/source/下载:
(1)qt-embedded-linux-opensource-src-4.5.3.tar.gz
(2)qt-x11-opensource-src-4.5.3.tar.gz
下载触摸屏管理程序:tslib-1.4.tar.gz
安装库:
# sudo apt-get install autoconf
# sudo apt-get install libtool
# sudo apt-get install libX11-dev libXext-dev libXtst-dev
2. 编译安装QT-X11-4.5.3
# tar zxvf qt-x11-opensource-src-4.5.3.tar.gz
# cd qt-x11-opensource-src-4.5.3
# ./configure
# gmake
# gmake install
可通过prefix=在configure阶段时指定安装路径,默认安装到/usr/local/,以上操作结束后,在/usr/local/目录下生成Trolltech目录。默认情况下已经把例子也进行编译,如进入/usr/local/Trolltech/Qt-4.5.3/examples/widgets/analogclock,运行./analogclock–qvfb,则可看到在屏幕上看到模拟时钟界面。
设置环境变量,可创建一配置文件setenv-qt-x11.sh,加入如下内容:
# !bin/bash
PATH=/usr/local/Trolltech/Qt-4.5.3/bin:$PATH
QTDIR=/usr/local/Trolltech/QT-4.5.3
MAINPATH=$QTDIR/man:$MAINPATH
LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export PATH QTDIR MAINPATH LD_LIBRARY_PATH
在终端执行如下命令,使其起作用:
# source setenv-qt-x11.sh
测试环境变量是否设置成功:
# echo $QTDIR
如显示/usr/local/Trolltech/QT-4.5.3,则设置成功
进入某个例子工程,执行:
# qmake –project --生成*.pro工程文件
# qmake --生成Makefile文件
# make --生成可执行程序
3. 编译安装tslib-1.4
# tar zxvf tslib-1.4.tar.gz
# cd tslib
# ./autogen.sh
# ./configure --prefix=/opt/tslib-mipsel/ --host=mipsel-linux ac_cv_func_malloc_0_nonnull=yes
# make
# make install
以上命令执行成功后,在/opt/tslib目录下生成bininclude lib etc四个文件夹。
4. 编译安装QT4.5.3
# tar zxvf qt-embedded-linux-opensource-src-4.5.3.tar.gz
# cd qt-embedded-linux-opensource-src-4.5.3
# ./configure -prefix/opt/qt4-mipsel -release -shared -fast -pch -no-qt3support -qt-sql-sqlite-no-libtiff -no-libmng -qt-libjpeg -qt-zlib -qt-libpng -qt-freetype -no-openssl-no-webkit -nomake examples -nomake demos -nomake tools -optimized-qmake-no-phonon -no-nis -no-opengl -no-cups -no-xcursor -no-xfixes -no-xrandr-no-xrender -no-xkb -no-sm -no-xinerama -no-xshape -no-separate-debug-info-xplatform qws/linux-mips-g++ -embedded mips -little-endian -depths 16 -no-qvfb-qt-gfx-linuxfb -no-gfx-qvfb -no-kbd-qvfb -no-mouse-qvfb -qt-kbd-usb-confirm-license -qt-mouse-tslib -I/opt/tslib-mipsel/include-L/opt/tslib-mipsel/lib
其中,”-I/opt/tslib-mipsel/include -L/opt/tslib-mipsel/lib”指定触摸屏头文件与库所在位置,之所以需要指定是因为配置时开启了触摸屏功能:-qt-mouse-tslib。
打开文件mkspecs/qws/linux-mips-g++/qmake.conf,把宏变量修改为正确的值:
把mips修改为mipsel,这是由于我们的GCC编译器为mipsel-linux-gcc,否则提示找不到编译器mips-linux-xx。
另外,把QMAKE_CFLAGS+= -mips32,QMAKE_CXXFLAGS += -mips32修改为:
QMAKE_CFLAGS += -pipe,QMAKE_CXXFLAGS += -pipe
# gmake
# gmake install
设置环境变量,加入到文件setenv-qt-embedded.sh
PATH=/opt/qt4-mipsel/bin:$PATH
QTDIR=/opt/qt4-mipsel
MAINPATH=$QTDIR/man:$MAINPATH
LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export PATH QTDIR MAINPATH LD_LIBRARY_PATH
通过在终端执行如下命令生效:
# source setenv-qt-embedded.sh
在进行交叉编译时需要此环境变量生效。
5. 移植库文件到开发板
开发板上电后,挂载NFS文件系统到/mnt下,然后创建库文件目录,拷贝qt库文件与tslib库文件到相应的目录下:
# cd /opt
# mkdir tslib qt4lib
# cp /mnt/tslib-mipsel/lib /mnt/tslib-mipsel /etc /opt/tslib/ –rd
# cp /mnt/tslib-mipsel /bin/ts_calibrate /mnt/tslib-mipsel/bin/ts_test /bin/
# cp /mnt/qt4-mipsel/lib /opt/qt4lib/ -rd
设置开发板的环境变量使其支持触摸屏与QT4的操作,打开/etc/profile,加入如下内容:
exportQTDIR=/opt/qt4lib
exportT_ROOT=/opt/tslib/
exportPATH=$QTDIR/bin:$PATH
export TSLIB_CONSOLEDEVICE=none
exportTSLIB_FBDEVICE=/dev/fb0
exportTSLIB_TSDEVICE=/dev/event0
exportTSLIB_PLUGINDIR=$T_ROOT/lib/ts
exportTSLIB_CONFFILE=$T_ROOT/etc/ts.conf
exportTSLIB_CALIBFILE=/etc/pointercal
exportTSLIB_TSEVENTTYPE=INPUT
exportQWS_MOUSE_PROTO=tslib:/dev/event0
exportQT_QWS_FONTDIR=/opt/qt4lib/lib/fonts
export LD_LIBRARY_PATH=$T_ROOT/lib:$QTDIR/lib:$LD_LIBRARY_PATH
保存退出,通过在终端执行source/etc/profile使其起作用,或重启后,自动执行该脚本。
需要根据开发板的实际情况来进行配置环境变量,特别注意的是触摸屏设备:
exportTSLIB_TSDEVICE=/dev/event0
要根据实际的驱动进行选择,同时需要注意:
exportTSLIB_TSEVENTTYPE=INPUT
该变量的设置要根据实际进行,与tslib配置相关联。
需要对tslib的配置文件作相应的修改,才可以使用,打开/opt/tslib/etc/ts.conf:
module_rawinput
module pthrespmin=1
module variancedelta=30
module dejitterdelta=100
module linear
6. 在开发板上验证触摸屏程序
验证触摸较正程序,在开发板终端下执行:
#ts_calibrate
运行该程序后,屏幕将出现五点校正画面,依次点击五点后,将生成触摸屏校正数据文件/etc/pointercal。该文件被QT程序所使用。
运行触摸屏拖曳测试程序:
#ts_test
运行后屏幕出现drag,draw 依次选择后进行测试,同时终端下出现拖曳后的取点数据。
7. 在开发板上验证QT程序
回到主机端交叉编译QT程序,首先确认环境变量是否配置正确:
# echo $QTDIR
查看打印的路径是否为指向交叉编译后的QT库路径,如果否,执行如下脚本进行配置:
# source setenv-qt-embedded.sh
然后进入例子程序目录,如:
# cd qt-embedded-linux-opensource-src-4.5.3/examples/mainwindows/application/
# qmake –project
# qmake
# make
将生成的application代码下载到开发板,在开发板终端上运行:
#./application -qws
如看到QT界面,表示运行成功。