您的位置:首页 > 服装鞋帽 > 男装 > Qt2.3.7交叉编译

Qt2.3.7交叉编译

luyued 发布于 2011-01-04 20:52   浏览 N 次  

Qt2.3.7交叉编译

关键字:qt 2.3.7 交叉编译

first created: 2008-6-16, by zwx

changed: 2008-6-20, by zwx

2008-8-16, by zwx

2008-11-01, by zwx

linux readhat 9 里面已经有QT2和QT3,在/usr/lib/qt-2.3.1和/usr/lib/qt-3.1,运行designer2或designer3即可

说明:本文档只针对使用qt在arm9上做图形界面开发。如果需要学习QT,可直接使用windows版本的qt4,非常方便。

一、开发环境:

主机环境:Redhat linux 9

交叉编译器:arm-linux-gcc 3.3.2

二、编译过程

注意事项:下面的命令中要防止出现中文字符。需要编译成支持多线程,否则QThread等线程相关类不能使用。

1、解压各个包

2、安装交叉编译工具

在/etc/bashrc添加下面一行即可

export PATH=/usr/local/arm/3.3.2/bin:$PATH

3、安装tmake

解压即可

4、交叉编译qt-2.3.7

将文件夹重命名为qt-2.3.7ARM

cd qt-2.3.7ARM

export QTDIR=$PWD

export QTEDIR=$QTDIR

cp /配置文件所在路径/qconfig-local.h ./src/tools

make clean

./configure -xplatform linux-arm-g++ -shared -debug -qconfig local -qvfb -depths 4,8,16,32 -thread

make

cd ..

5、vi /etc/bashrc添加下面几行(假设Qt所有目录为QT=/usr/local/arm/Qt)

#

#tmake dir

QT=/usr/local/arm/Qt

export TMAKEDIR=$QT/tmake-1.11

export TMAKEPATH=$TMAKEDIR/lib/qws/linux-arm-g++

export PATH=$TMAKEDIR/bin:$PATH

#

#Qt/Embedded 2.3.7

export QTEARMDIR=$QT/qt-2.3.7ARM

export PATH=$QTEARMDIR/bin:$PATH

export LD_LIBRARY_PATH=$QTEARMDIR/lib:$LD_LIBRARY_PATH

6、交叉编译过程:使用QT3编程,在QTE2.7下交叉编译

(1)在QT3下编程

使用/usr/lib/qt-3.1/bin/designer设计界面程序

使用qmake生成makefie文件,make,运行程序即可

如果要使用多线程,可在工程设置->C++属性页中config项增加thread;

如果需要使用sqlite3动态库,可在工程设置->C++属性页中Libs项增加-lpsqlite3

(2)修改程序,符合qt2编程要求

将界面生成的源码拷贝出来

cp .ui/* ./

修改原程序,使之可以在qt2.3.7交叉编译通过.

例如不能使用中文,QTextEdit使用QMultiLineEdit代替.生成源码中包含的界面头文件#include "../filename.ui.h"更改为#include "filename.ui.h"

修改.pro工程文件,去掉.ui,增加.cpp和.h文件到.pro工程文件

(3)交叉编译程序

(可选:使用命令progen -o hello.pro -t app.t生成项目文件,一般不用,按上面要求直接手动编辑就可)

echo $TMAKEPATH

export TMAKEPATH=$TMAKEDIR/lib/qws/linux-arm-g++

export QTDIR=$QTEARMDIR

tmake -o makefile hello.pro

产生makefile文件后修改makefile文件如下:

将LINK = arm-linux-gcc 这句话改为

LINK = arm-linux-g++

将LIBS = $(SUBLIBS) -L$(QTDIR)/lib -lm –lqte 这句话改为

LIBS = $(SUBLIBS) -L/usr/local/arm/3.3.2/lib -L$(QTDIR)/lib -lm -lqte

运行make命令即可

(4)下载到板子上运行即可

7、使用Qtopia

(1)安装

rpm –ivh qtopia-free-1.7.0-2rh9.i386.rpm

安装在/opt/Qtopai目录下

(2)运行和编译例子程序

(参考按照后/opt/Qtopia/doc下的帮助网页)

Here are the steps necessary to compile and run the example program on the Linux desktop:

Check the environment is correct:

export QPEDIR=/opt/Qtopia

export QTDIR=/opt/Qtopia

export PATH=$QTDIR/bin:$PATH

export TMAKEPATH=/opt/Qtopia/tmake/lib/qws/linux-generic-g++

export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

Make a copy of the example:

cd somewhere

cp -r $QPEDIR/examples/application .

cd application

Generate a Makefile:

tmake -o Makefile example.pro

Build the example:

make

Install it:

su # root privileges required to install

cp example.desktop $QPEDIR/apps/Applications/

cp Example.png $QPEDIR/pics/

cp example $QPEDIR/bin/

cp example.html $QPEDIR/help/html/

exit # no need to be root anymore

To run it, first run the Qt Virtual Framebuffer:

qvfb &

Then run the Qtopia environment:

qpe

Your application should be available in the Applications tab visible inside the Qt Virtual Framebuffer window.

If you want to distribute your applications to others, build an RPM package, e.g.:

mkipks -rpm -arch i386 example.control

8、交叉编译Qtopia

交叉编译过程

解压缩源码包qtopia-free-1.7.0.tar.gz到/opt/下

export QPEDIR=/opt/qtopia-free-1.7.0

export QTDIR=$QTEARMDIR

export PATH=$QPEDIR/bin:/usr/local/arm/3.3.2/bin:$PATH

export TMAKEPATH=/opt/Qtopia/tmake/lib/qws/linux-arm-g++

export LD_LIBRARY_PATH=$QPEDIR/lib:$LD_LIBRARY_PATH

cd /opt/qtopia-free-1.7.0/src

./configure -xplatform linux-arm-g++

拷贝uic到$QTEARMDIR/bin

make

编译例子

export QPEDIR=/opt/qtopia-free-1.7.0

export QTDIR=$QTEARMDIR

export PATH=$QPEDIR/bin:/usr/local/arm/3.3.2/bin:$PATH

export TMAKEPATH=/opt/Qtopia/tmake/lib/qws/linux-arm-g++

export LD_LIBRARY_PATH=$QPEDIR/lib:$LD_LIBRARY_PATH

cd 例子所在目录

tmake -o Makefile example.pro

产生makefile文件后修改makefile文件如下:

将LINK = arm-linux-gcc 这句话改为

LINK = arm-linux-g++

将LIBS = $(SUBLIBS) -L$(QTDIR)/lib -lm –lqte 这句话改为

LIBS = $(SUBLIBS) -L/usr/local/arm/3.3.2/lib -L$(QTDIR)/lib -lm -lqte

运行make命令即可

9、制作cramfs文件系统

mkdir /mnt/cram

mount –t cramfs qtopia.cramfs /mnt/cram –o loop

将/mnt/cram打包,解压缩到另一个目录temp下

对文件系统做操作

mkcramfs temp xxxxxx.cramfs (生成新的根文件系统)

10、安装qte-4.4.3

/usr/include/openssl/kssl.h:72:18: krb5.h: 没有那个文件或目录的解决办法

ln -s /usr/kerberos/include/com_err.h /usr/include/com_err.h
ln -s /usr/kerberos/include/profile.h /usr/include/profile.h
ln -s /usr/kerberos/include/krb5.h /usr/include/krb5.h

11、qt中文相关

将中文转换为Unicode编码才能使用控件显示出来。

广告赞助商