qt的建立.docx

上传人:b****3 文档编号:4347001 上传时间:2022-11-30 格式:DOCX 页数:11 大小:18.98KB
下载 相关 举报
qt的建立.docx_第1页
第1页 / 共11页
qt的建立.docx_第2页
第2页 / 共11页
qt的建立.docx_第3页
第3页 / 共11页
qt的建立.docx_第4页
第4页 / 共11页
qt的建立.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

qt的建立.docx

《qt的建立.docx》由会员分享,可在线阅读,更多相关《qt的建立.docx(11页珍藏版)》请在冰豆网上搜索。

qt的建立.docx

qt的建立

4.1tmake安装

tarxfvztmake-1.11.tar.gz

mvtmake-1.11tmake

exportTMAKEDIR=$PWD/tmake

exportTMAKEPATH=$TMAKEDIR/lib/qws/linux-generic-g++

4.2QT编译

tarxfvzqt-x11-2.3.2.tar.gz

mvqt-2.3.2qt-x11

cdqt-x11

exportQTDIR=$PWD

echoyes|./configure-static-no-xft-no-opengl-no-sm

make-Csrc/moc

cpsrc/moc/mocbin

make-Csrc

make-Ctools/designer

make-Ctools/qvfb

cptools/qvfb/qvfbbin

stripbin/uicbin/mocbin/designerbin/qvfb

4.3QTE编译

tarxfvzqt-embedded-2.3.7.tar.gz

mvqt-2.3.7/qt

cpqt-x11/bin/?

*qt/bin

exportQTDIR=$PWD/qt

exportQPEDIR=$PWD/qtopia

exportTMAKEDIR=$PWD/tmake

exportTMAKEPATH=$TMAKEDIR/lib/qws/linux-generic-g++

exportPATH=$QTDIR/bin:

$QPEDIR/bin:

$TMAKEDIR/bin:

$PATH

cdqt

makeclean

cp../qtopia/src/qt/qconfig-qpe.hsrc/tools/

(echoyes;echoyes)|./configure-platformlinux-generic-g++-qconfigqpe-depths16,24,32

make-Csrc

4.5QPE编译

tarxfvzqtopia-free-1.7.0.tar.gz

mvqtopia-free-1.7.0qtopia

#tarxfvze2fsprogs-1.35.tar.gz

#cde2fsprogs-1.35

exportLD_LIBRARY_PATH=$QTDIR/lib:

$QPEDIR/lib:

$LD_LIBRARY_PATH

#./configure

#make

#makeinstalllib/uuid/

将e2fsprogs-1.35/lib/目录下uuid的文件夹复制到qtopia/include下

将e2fsprogs-1.35/lib/中的libuuid.a复制到/qtopia/lib下

cdqtopia/src

./configure-platformlinux-generic-g++

make

当在PC上模拟Qtopia的运行时,需要用到对应Qt版本的库文件,因此需要修改/etc/ld.so.conf文件以适应刚刚安装的Qt(Redhat安装时带有Qt库,但不适合我们最新安装的版本),修改后的ld.so.conf文件内容如下:

/wu2410/qt/lib

/wu2410/qtopia/lib

/usr/kerberos/lib

/usr/X11R6/lib

/usr/lib/sane

修改完此文档后,为了让刚刚安装的库生效,必须运行ldconfig。

至此Qt的开发缓建已经建立

(1)设置环境变量

exportQTDIR=$PWD/qt

exportQPEDIR=$PWD/qtopia

exportTMAKEDIR=$PWD/tmake

exportTMAKEPATH=$TMAKEDIR/lib/qws/linux-generic-g++

exportPATH=$QTDIR/bin:

$QPEDIR/bin:

$TMAKEDIR/bin:

$PATH

(2)启动虚拟帧缓存

qvfb&

或qvfb-width640–height480&

(3)运行qtopia

qpe&

=====================================================================

1.Preparesoftwareandcross-compiletoolchain

xscalev1.tar.gzarm交*编译工具链

e2fsprogs-1.35.tar.gz用于编译生成libuuid库

tmake-1.11.tar.gz生成makefile

qt-embedded-2.3.7.tar.gzQt/Embedded

qt-x11-2.3.2.tar.gzQt/X11

qtopia-free-1.7.0.tar.gzQtopia

Supposethatwesavethesesoftwareto/root/qt-arm

2.Installtoolchain这里使用的是xscale板子提供的交*编译工具链

cd/root/qt-arm

tarzxvfxscalev1.tar.gz

mvxscalev1/opt/

vi~/.bash_profile添加到PATH路径

PATH=/opt/xscalev1/bin:

$PATHadd

source~/.bash_profile

3.Installtmaketmake用于交*编译生成qt应用程序的makefile,也可用于生成qt的本地makefile,区别在于设置TMAKEPATH路径的不同,一个用于arm,一个用于x86。

注意:

tmake机子上本来就有的,但我们要使用11以上的版本,如果是11以上的版本可以不用安装。

tmake–v查看一下它的版本,有些版本比较老,建议换掉,同时把以前的tmake可执行文件删掉

tmake使用:

在某个qt工程文件夹内

qmake–project生成工程文件假定工程文件夹名hello

tmakehello.pro–oMakefile生成makefile

make编译连接成可执行文件

cd/root/qt-arm

tarzxvftmake-1.11.tar.gz

vitmake-1.11/lib/qws/linux-arm-g++/tmake.conf

TMAKE_LINK=arm-linux-g++//将原来的arm-linux-gcc改成arm-linux-g++

TMAKE_LINK_SHLIBS=arm-linux-g++

mvtmake-1.11/usr/local/

vi~/.bash_profile添加以下一些信息

PATH=/usr/local/tmake-1.11/bin:

$PATH遖dd

TMAKEPATH=/usr/local/tmake-1.11/lib/qws/linux-arm-g++

exportPATH

exportTMAKEPATH

source~/.bash_profile

假如不用这种方法,可以直接用:

exportPATH=$PWD/tmake-1.11/bin:

$PATH

exportTMAKEPATH=$PWD/tmake-1.11/lib/qws/linux-arm-g++

4.Installe2fsprogs为arm编译libuuid库

cd/root/qt-arm

tarzxvfe2fsprogs.tar.gz

cde2fsprogs

mkdirbuild

cdbuild

../configure--enable-elf-shlibs--build=i386-linux--host=arm-linux--with-cc=/opt/xscalev1/bin/arm-linux-gcc--with-linker=/opt/xscalev1/bin/arm-linux-ld

make

其中lib/libuuid.so.1.2libuuid.so.1libuuid.so即是我们需要编译的库

5.UnpackQtopiacd/root/qt-arm

tarzxvfqtopia-free-1.7.0.tar.gz

cdqtopia-free-1.7.0

exportQPEDIR=$PWDQPEDIR环境变量下面要用到

6.InstallQt/Embeddedcd/root/qt-arm

tarzxvfqt-embedded-2.3.7.tar.gz

cdqt-2.3.7

exportQTDIR=$PWD

exportQTEDIR=$PWD

exportPATH=$PWD/bin:

$PATH

exportLD_LIBRARY_PATH=$PWD/lib:

$LD_LIBRARY_PATH

visrc/kernel/qwsmouse_qws.cpp修改触摸屏驱动,详见附件

cp$QPEDIR/src/qt/qconfig-qpe.hsrc/tools/

./configure-shared-xplatform–thread–no-xftlinux-arm-g++-qconfigqpe-depths4,8,16,32

依次输入yes,no

visrc/Makefile

add"-DQWS_CUSTOMTOUCHPANEL"into"QT_CXXFLAGS_OPT"

makesub-src

其中lib目录下的libqte.so.2.3.7即是我们需要的qte库,还有一些支持多线程的库

7.InstallQt/X11编译qt-x11-2.3.2并非是用来开发,而是Virtual为了产生编译qtopia必须的库以及用于在图形环境下进行调试的qvfb(QtVirtualFrameBuffer)。

这里安装qtopia时之要编译qt-2.3.2,是为了使用qt-2.3.2生成的uic,所以要用gcc/g++编译,不要用arm-linux-gcc/g++编译。

注意不能直接用/usr/bin/uic,读者自己比较。

cd/root/qt-arm

tarzxvfqt-x11-2.3.2.tar.gz

cdqt-2.3.2/

viconfigs/linux-g++-shared修改语句

SYSCONF_CXXFLAGS_X11=-I/usr/include/freetype2斜体为我们要修改的语句

exportQTDIR=$PWD

exportPATH=$PWD/bin:

$PATH

exportLD_LIBRARY_PATH=$PWD/lib:

$LD_LIBRARY_PATH

./configure–no-xft

make

make-Ctools/qvfb/

cptools/qvfb/qvfbbin/

./bin/qvfb&x11-FrameBuffer就运行起来了

cpbin/uic$QPEDIR/bin/

cpbin/uic$QTEDIR/bin/

8.BuildQtopiacd/root/qt-arm/qtopia-free-1.7.0

cp/root/qt-arm/e2fsprogs/build/lib/libuuid.so*/opt/xscalev1/lib/

cp/root/qt-arm/e2fsprogs/build/lib/libuuid.so*/opt/xscalev1/arm-linux/lib/

cp-a/usr/include/uuidinclude/

exportQTDIR=$QTEDIR

exportPATH=$PWD/bin:

$PATH

exportLD_LIBRARY_PATH=$PWD/lib:

$LD_LIBRARY_PATH

cdsrc/

./configure-xplatformlinux-arm-g++需要交*编译

make

9.Runningapplication运行程序有两种方式,一种是把相应的库和应用程序下载到板子上,另一种是通过nfs方式。

9.1runningapplicationinboard

将qt-2.3.7/lib目录下载到板子上/usr/local/qt-embedded/目录下

将qtopia-free-1.7.0目录下的文件(要做一些裁减工作,把不必要的文件删除)下载到/usr/local/qtopia目录下

Minicom登陆到开发板上

下载步骤略

exportLD_LIBRARY_PATH=/usr/local/qt-embedded/lib:

$LD_LIBRARY_PATH

exportLD_LIBRARY_PATH=/usr/local/qtopia/lib:

$LD_LIBRARY_PATH

cd/usr/local/qtopia/bin

./qpe–qws&运行qpe程序,移植成功

9.2runningapplicationthroughnfs

首先我们的pc机要开启nfs服务,详见开发板网络配置文档

Pc机:

vi/etc/exports

/*(rw,no_root_squalsh)

/etc/rc.d/init.d/nfsstart开启nfs服务

netstat–au查看是否开启nfs服务,如果没有查看防火墙

开发板:

Minicom登陆到班子上

mount–tnfs–otcp192.168.1.22:

/root/qt-arm/mnt/qt-arm

cd/mnt/qt-arm

cdqt-2.3.7

exportLD_LIBRARY_PATH=$PWD/lib:

$LD_LIBRARY_PATH

cd../qtopia-free-1.7.0

exportLD_LIBRARY_PATH=$PWD/lib:

$LD_LIBRARY_PATH

cdbin

./qpe–qws运行qpe程序,移植成功

附件1:

触摸屏修改程序

classQCustomTPanelHandlerPrivate:

publicQWSMouseHandler{

Q_OBJECT

public:

QCustomTPanelHandlerPrivate(MouseProtocol,QStringdev);

~QCustomTPanelHandlerPrivate();

private:

intmouseFD;

unsignedcharprevstate;

privateslots:

voidreadMouseData();

};

QCustomTPanelHandlerPrivate:

:

QCustomTPanelHandlerPrivate(MouseProtocol,QString){

#ifdefQWS_CUSTOMTOUCHPANEL

if((mouseFD=open("/dev/ts",O_RDONLY))<0){

qWarning("Cannotopen/dev/ts(%s)",strerror(errno));

return;

}else{

sleep

(1);

}

QSocketNotifier*mouseNotifier;

mouseNotifier=newQSocketNotifier(mouseFD,QSocketNotifier:

:

Read,this);

connect(mouseNotifier,SIGNAL(activated(int)),this,SLOT(readMouseData()));

#endif

}

QCustomTPanelHandlerPrivate:

:

~QCustomTPanelHandlerPrivate(){

if(mouseFD>=0)

close(mouseFD);

}

structCustomTPdata{

unsignedcharstatus;

unsignedshortxpos;

unsignedshortypos;

};

voidQCustomTPanelHandlerPrivate:

:

readMouseData()

{

if(!

qt_screen)

return;

CustomTPdatadata;

shortdata2[4]={0};

intret;

ret=read(mouseFD,data2,sizeof(data2));

if(ret){

data.status=data2[0];

data.xpos=data2[1];

data.ypos=data2[2];

QPointq;

q.setX(data.xpos);

q.setY(data.ypos);

mousePos=q;

if(data.status&&!

prevstate){

emitmouseChanged(mousePos,Qt:

:

LeftButton);

}elseif(!

data.status&&prevstate){

emitmouseChanged(mousePos,0);

}

prevstate=data.status;

}

if(ret<0){

qDebug("Error%s",strerror(errno));

}

}

========================================================================================

准备以下源码包和文件(可以从网上下载)

tmake-1.11.tar.gz

qt-embedded-2.3.7.tar.gz

qt-x11-2.3.2.tar.gz

qconfig-local.h

假设源码包放在/home/build_qte/目录下

cd/home/build_qte/

1tmake配置

tarzxvftmake-1.11.tar.gz;解压tmake源码包

cdtmake-1.11;进入解压目录

vienv.sh;建立shell文件,在文件中添加如下内容

exportTMAKEDIR=$PWD

exportTMAKEPATH=$TMAKEDIR/lib/qws/linux-x86-g++

exportPATH=$TMAKEDIR/bin:

$PATH

保存退出.

sourceenv.sh;添加环境变量

cd..;退出tmake-1.11目录

2配置编译qt-embedded源码包

tarzxvfqt-embedded-2.3.7.tar.gz

mvqt-2.3.7qt-2.3.7-x86

cdqt-2.3.7-x86

cp/home/build_qte/qconfig-local.hsrc/tools/;qconfig-local.h文件在开发板提供的光碟上可以找到

vienv.sh;添加如下内容

exportQTDIR=$PWD

exportQTEDIR=$QTDIR

exportLD_LIBRARY_PATH=$QTDIR/lib:

$LD_LIBRARY_PATH

exportPATH=$QTDIR/bin:

$PATH

;保存退出.

sourceenv.sh;添加环境变量

./configure-qconfiglocal-gif-thread-qvfb-depths4,8,16,32;配置源码包

makesub-src;编译

cd..

3配置编译qt-x11源码包

tarzxvfqt-x11-2.3.2.tar.gz

cdqt-2.3.2

exportQTDIR=$PWD

exportPATH=$QTDIR/bin:

$PATH

exportLD_LIBRARY_PATH=$QTDIR/lib:

$LD_LIBRARY_PATH

./configure-no-xft-no-opengl

make

make-Ctools/qvfb

cptools/qvfb/qvfb$QTEDIR/bin/

cpbin/uic$QTEDIR/bin

cd..

;退出终端!

4实例

;建立qte开发的工作目录

mkdir/home/qte

cd/home/qte

;建立shell文件,设置环境变量

viset-qte-x86.sh

;在文件中添加如下

#!

/bin/bash

exportQTDIR=/home/build_qte/qt-2.3.7-x86;编译qt-2.3.7的目录

exportLD_LIBRARY_PATH=$QTDIR/lib:

$LD_LIBRARY_PATH

exportTMAKEDIR=/home/build_qte/tmake-1.11;tmake-1.11的目录

exportTMAKEPATH=$TMAKEDIR/lib/qws/linux-x86-g++

exportPATH=$QTDIR/bin:

$TMAKEDIR/bin:

$PATH

echo$PATH

;保存退出

;先不要执行sourceset-qte-x86.sh(不要设置环境变量)

;建立工程目录

mkdirhello

cdhello

;用designer生成工程文件(hello.pro),窗体文件(hello.ui),和main.cpp文件.

progen-nhello-ohello.pro

cd..

sourceset-qte-x86.sh;设置环境变量

cdhello

;生成源文件

uichello.ui-ohello.h

uichello.ui-ihello.h-ohello.cpp

删除hello.pro,hello.ui文件,省下hello.h,hello.cpp,main.cpp三个文件

progen-ohello.pro;生成工程文件

tmakehello.pro-oMakefile;生成Makefile文件

make;开始编译

;在PC机的模拟执行

qvfb&

;新建终端,在新建的终端中执行如下

cd/home/qte

sourceset-qte-x86.sh

cdhello

./hello-qws;执行刚才编译的hello.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1