feisky

云计算、虚拟化与Linux技术笔记
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Qt开发环境的建立

Posted on 2009-11-07 21:39  feisky  阅读(4107)  评论(4编辑  收藏  举报

开发模式

               在宿主机Federa上通过qvfb来模拟帧缓冲

               开发完毕后使用qt-embedded重新编译后下载程序到ARM上运行(ARM上需要安装Qt)

开发所需软件

  • qtopia-free-1.7.0.tar.gz
  • qt-x11-2.3.2.tar.gz
  • tmake-1.11.tar.gz
  • qt-embedded-2.3.7.tar.gz

配置时设置qvfb: ./configure -qconfig -qvfb -depths 4,8,16,32

 

程序的运行方式: ./qvfb &

                           ./canvas –qws   (一般调试时采用这种方式)

                          注意:QT默认显示窗口大小为240x320像素,指定其他窗口大小:qvfb -width 640 -height 480 &

如果需要将自己开发的安装在Qtopia中,则需要以下的步骤:

1. 在/x86-qtopia目录下建立文件夹hello,并编写相应的程序,执行:

make

编译完后程序生成在$QPEDIR/bin下

2. 设置配置文件hello.desktop并复制配置文件到$PEDIR/apps/Applications下:

配置文件内容:

[Desktop Entry]

Comment=An Hello Demo.

Exec=hello

Icon=Hello

Type=Application

Name=Hello

执行命令:

cp hello.desktop $PEDIR/apps/Applications

3. 执行程序:

qvfb &

qpe

4. 修改图标:

设计32*32的PNG图片放到<Qtopia>/pics/inline目录下,然后用qembed转换

qembed -images $QPEIDR/pics/inline/*.* > $QPEIDR/src/librabies/qtopia/inlinepics_p.h

宿主机Qt的安装

***********************************************************************************************

注:以下安装步骤在Redhat 9系统下测试通过,安装步骤参考了MagicARM2410平台实验手册。

在/zylinux下建立目录 x86-qtopia 所有的软件包都复制到该目录下

***********************************************************************************************

1.安装tmake

tar xzvf tmake-1.11.tar.gz

export TMAKEDIR=/zylinux/x86-qtopia/tmake-1.11

export TMAKEPATH=/zylinux/x86-qtopia/tmake-1.11/lib/qws/linux-x86-g++

export PATH=$PATH:/zylinux/x86-qtopia/tmake-1.11/bin/

Tmake配置文件:Tmake.conf

Tmake的模板:app.t 用于生成应用程序的Makefile

    lib.t 用于生成库文件的Makefile

    subdirs.t 用于创建编译子目录中程序的Makefile

2.安装Qt/X11

tar xzvf qt-x11-2.3.2.tar.gz

cd qt-2.3.2/

export QTDIR=$PWD

export PATH=$QTDIR/bin:$PATH

export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

./configure -static -no-xft -no-opengl

make

make -C tools/qvfb

mv tools/qvfb/qvfb bin

export QTEDIR=$QTDIR

cp bin/uic $QTEDIR/bin

cd ..

Qt的配置比较复杂 详细查看./configure --help

make -C tools/designer  图形设计器designer

3.解压Qtopia

tar xzvf qtopia-free-1.7.0.tar.gz

export QPEDIR=$PWD/qtopia

4.安装Qt/Embeded

这里使用了QPE的配置文件

tar xzvf qt-embedded-2.3.7.tar.gz

cd qt-2.3.7

export QTDIR=$PWD

export QTEDIR=$QTDIR

export PATH=$QTDIR/bin:$PATH

export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

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

(echo yes; echo yes)|./configure -platform linux-x86-g++ -qconfig qpe -qvfb -depths 4,8,16,32

make sub-src  //make -C src

cd ..

5.安装Qtopia

cd qtopia-1.7.0

export QTDIR=$QTEDIR

export QPEDIR=$PWD

export PATH=$QTEDIR/bin:$PATH

cd src

./configure -platform linux-x86-g++

make

cd ../..

***********************************************************************************************

***********************************************************************************************

配置脚本(以上5步的完整安装,所有需要文件放在/zylinux/x86-qtopia下,执行./build):

#!/bin/bash

echo remove old dirs

rm -rf tmake

rm -rf qt

rm -rf qt-x11

rm -rf qtopia

echo Unpack all packages

tar xzvf tmake-1.11.tar.gz

tar xzvf qt-embedded-2.3.7.tar.gz

tar xzvf qt-x11-2.3.2.tar.gz

tar xzvf qtopia-free-1.7.0.tar.gz

echo rename

mv tmake-1.11 tmake

mv qtopia-free-1.7.0 qtopia

mv qt-2.3.7 qt

echo Start Install Qt-X11

cd qt-2.3.2

export QTDIR=$PWD

echo yes|./configure -static -no-xft -no-opengl -no-sm

make -C src/moc

cp src/moc/moc bin

make -C src

make -C tools/designer

make -C tools/qvfb

cp tools/qvfb/qvfb bin

strip bin/uic bin/moc bin/designer bin/qvfb

#cp bin/uic $QTEDIR/bin

cp bin/?* ../qt/bin

cd ..

#cp $QTDIR/bin/?* qt/bin

mv qt-2.3.2 qt-x11

echo Start Setting env-var

export QTDIR=$PWD/qt

export QTEDIR=$QTDIR

export QPEDIR=$PWD/qtopia

export TMAKEDIR=$PWD/tmake

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

export PATH=$QTDIR/bin:$QPEDIR/bin:$TMAKEDIR/bin:$PATH

export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

echo Start build Qt/Embedded

cd qt

make clean

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

(echo yes; echo yes)|./configure -platform linux-generic-g++ -qconfig qpe -qvfb -depths 16,24,32

make -C src

cd ..

echo Start Build Qtopia

cd qtopia/src

./configure -platform linux-generic-g++

make 

echo OK

这样安装完后的安置路径为:

qt-embedded-2.3.7.tar.gz /zylinux/x86-qtopia/qt

qtopia-free-1.7.0.tar.gz /zylinux/x86-qtopia/qtopia

qt-x11-2.3.2.tar.gz /zylinux/x86-qtopia/qt-x11

tmake-1.11.tar.gz /zylinux/x86-qtopia/tmake

***********************************************************************************************

***********************************************************************************************

安装完毕,开发前需要导出环境变量:

export QTDIR=$PWD/qt

export QPEDIR=$PWD/qtopia

export TMAKEDIR=$PWD/tmake

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

export PATH=$QTDIR/bin:$QPEDIR/bin:$TMAKEDIR/bin:$PATH

***********************************************************************************************

***********************************************************************************************

注:如果运行时找不到某些库,则需要设置库路径:

在/etc/ld.so.conf文件中增加Qt库的路径

/zylinux/x86-qtopia/lib

/zylinux/x86-qtopia/qtopia/lib

添加完路径后,在/etc目录下以root身份执行ldconfig使Qt的库生效。

 

注:undefined reference to vtable for "xxx::xxx"解决方法

某一个类中如果加入Q_OBJECT后, 则link时提示:undefined reference to vtable for "xxx::xxx".删掉它则没有任何问题.

解决:因为qmake生成Makefile的时候,这个类的头文件中并没有Q_OBJECT,所以在相应的Makefile里面并没有用moc xxx.h命令,最终导致链接失败.重新运行qmake,问题解决.在查找解决方法的时候,附带发现一点:qmake 不会处理.cpp文件里的Q_OBJECT,所以,如果在.cpp文件中有它的话,也会产生undefined reference to vtable for "xxx::xxx". 这时,需要先用moc xxxx.cpp生成相应的moc文件,再包含到.cpp里面去,才能解决这个问题.

无觅相关文章插件,快速提升流量