QT4移植

来源:互联网 发布:杭州趣翼网络科… 编辑:程序博客网 时间:2024/04/27 20:21


主机编辑器: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界面,表示运行成功。

0 0
原创粉丝点击