QT4移植

宿主机:Ubuntu10.04

主机编辑器:gcc4.6.1

交叉编译器:mipsel-linux-gcc (龙芯gcc-3.4.6-2f)

开发板:龙芯1b开发板(http://item.taobao.com/item.htm?spm=a1z10.1.w4004-4678790104.8.WBYZuT&id=36562593290)

QT版本:QT4.5.3

注:此方法同时适用ARM平台,只需要作少量的修改即可。

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

 

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
#make
#make install

可通过prefix=在configure阶段时指定安装路径,默认安装到/usr/local/,可通过./configure --help获知配置信息。

以上操作结束后,在/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目录下生成bin、include、 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

#make
#make install

设置环境变量,加入到文件setenv-qt-embedded.sh

#!bin/bash
PATH=/opt/qt4-mipsel/bin:$PATH 
QTDIR=/opt/qt4-mipsel 
MAINPATH=$QTDIR/man:$MAINPATH 
LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH 
export PATH  QTDIRMAINPATH   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/ –rdf
#cp /mnt/tslib-mipsel/bin/ts_calibrate /mnt/tslib-mipsel/bin/ts_test  /bin/
#cp /mnt/qt4-mipsel/lib /opt/qt4lib/ -rdf

设置开发板的环境变量使其支持触摸屏与QT4的操作,打开/etc/profile,加入如下内容:

exportQTDIR=/opt/qt4lib
exportT_ROOT=/opt/tslib/
exportPATH=$QTDIR/bin:$PATH
exportTSLIB_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使其起作用,或重启后,自动执行该脚本。

需要根据开发板的实际情况来进行配置环境变量,特别注意的是触摸屏设备:

export TSLIB_TSDEVICE=/dev/event0

也有可能是:

export TSLIB_TSDEVICE=/dev/input/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界面,表示运行成功。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值