1.下载Qt
在TrollTech网站http://www.trolltech.com/developer/ 上搜索下载Qt的相关包,包括
qt-embedded-free-3.3.4.tar.gz
qt-x11-opensource-src-4.2.3.tar.gz
tmake-1.8.tar.gz#可以不要,因为有现在这些高版本的qt-embedded,qt-x11,qtopia里就有qmake
这些都是最新的Qt版本,编译过程好像跟查资料时的老版本的步骤有很大的不同,比如新版本使用qmake而不像以前使用tmake,还有configure脚本文件配置时的参数有许多变化,编译时没有什么资料可以查,除了trolltech本身的一些文档,剩下的只好自己摸索了。
2.安装与编译
假设我把这些包都放在 /root/qt 下
解压qt-x11-opensource-src-4.2.3.tar.gz
tar vxzf qt-x11-opensource-src-4.2.3.tar.gz
export QT2DIR=$PWD/qt-x11-opensource-src-4.2.3#设置一下环境变量
解压qt-embedded-free-3.3.4.tar.gz
tar vxzf qt-embedded-free-3.3.4.tar.gz
export QTEDIR=$PWD/qt-embedded-free-3.3.4
解压tmake-1.8.tar.gz#后来发觉一开始 tmake是没用的因为 2.0以上大版本有了qmake,不过开发的时候可以选择用的,比较方便。
export TMAKEDIR=$PWD/tmake-1.8
然后就是编译了。
开始发现老是要设置环境变量,所以我专门各编辑一个脚本文件对 qt-x11-opensource-src-4.2.3和 qt-embedded-free-3.3.4进行编译,分别放在各自的目录中。
编译 qt-x11-opensource-src-4.2.3 时脚本为:
#------------------------------------------------------------------------------------
#!/bin/sh
export QT2DIR=/root/qt/qt-x11-opensource-src-4.2.3
export QTEDIR=/root/qt/qt-embedded-free-3.3.4
export QTDIR=$QT2DIR
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
./configure-prefix-install -opengl#其实这里应该还可以设置更多多的选项,比如去掉一些支持,
#可以缩短编译时间,因为这个工程编译完要用几个小时啊!
#因为我需要的opengl的支持,所以选择了这个选项。
#其他的可以通过./configure--help 命令研究一下。
make
#------------------------------------------------------------------------------------
然后就可以干其他的事情了,编译时超痛苦,那个多文件阿,用了一上午才搞定,所以这时你可以尽情去玩一下了。
编译好之后还要去qt-x11-opensource-src-4.2.3/tools/qvfb编译 qvfb工具(这个工具编译qt-embedded有用),make一下就可以了。
然后就编译 qt-embedded-free-3.3.4,下面是的脚本:
#------------------------------------------------------------------------------------
#!/bin/sh
export QT2DIR=/root/qt-x11-opensource-src-4.2.3
export QTEDIR=/root/qt-embedded-free-3.3.4
export QTDIR=$QTEDIR
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
cp $QT2DIR/bin/uic $QTEDIR/bin/#下面这两个工具编译时要使用
cp $QT2DIR/bin/qvfb $QTEDIR/bin/
./configure-qconfig qpe -qvfb -depths 4,8,16,32
make
#------------------------------------------------------------------------------------
又是好长一段编译时间,大概一个小时左右。
3.在virtual framebuffer里运行程序
编译好后就可以尝试编译 运行examples/ 的例程了,但是编译这些例子的时候有个很奇怪的错误:
Some of the required modules (large-config) are not available
网上查了一下,幸亏查到了仅有一个提问,而且有人决绝了, 说要修改每个例子下的.pro文件,把 requires = large-config 这一行注释掉,但这一行原来真正有什么用,去掉后会有什么影响,我不得而知,不过编译后还是可以在virtual framebuffer上运行的。
编译好例子后就可以运行了,一开始运行例子的时候总会有一个错误:/usr/lib/qt-3.3/lib/fonts/fontdir没找到什么的,我就奇怪了,我的qt并没有安装在这个目录的(按照上面的脚本文件),查看一下环境变量,居然有一个QTDIR非临时变量(在多个shell中都会显示的,应该在配置文件写死的)指向了这个目录,再进这个目录查看一下文件的日期,都是很久之前的,绝不是刚刚编译的,才知道这个是操作系统自带的qt。于是每次运行时qt程序时需要用export把QTDIR改掉,改成 $QTEDIR同时也把 $QTEDIR/bin 添加到 PATH 中,因为 要用这个目录下的qvfb程序是 qt程序运行在virtual framebuffer上,运行时执行:
qvfb -width 640 -height 480 &
sleep 10#不知道这个有什么用?不过好像可以使qvfb在后台运行
./launcher -qws#launcher是examples的一个例子
如果成功的话qt程序就会运行在qvfb的界面里。
【安装与建立 Qt 桌面开发运行环境】4.编写自己的qt程序
下面可以自己编写自己的程序了。
先设置一下环境变量,我这个系统比较郁闷,有老的qt,所以好把QTDIR设置成新编译都目录,覆盖原来的,这个很重要,否则无法通过编译,这个弄了我一个晚上才发现。
首先修改环境变量
#------------------------------------------------------------------------------------
export QTDIR=/root/qt-embedded-free-3.3.4#把老的qt覆盖
export PATH=/root/qt-embedded-free-3.3.4/bin:$PATH#要使用qmake程序
#------------------------------------------------------------------------------------
我编写了以下代码,hello.cpp,并把这个文件保存在名为hello的目录下
#include
#include
int main(int argc, char **argv)
{
QApplication app (argc, argv);
QLabel *hello = new QLabel("
app.setMainWidget(hello);
hello->show();
return app.exec();
}
进入hello目录,生成.pro文件
qmake-project
也可以用tmake-1.8/bin下的progen工具生成.pro文件,tmake其中的一个使用就是这里了,不过要把tmake-1.8/bin的完整路径加入到环境变量PATH中
修改hello.pro文件为
#------------------------------------------------------------------------------------
TEMPLATE= app
TARGET= hello
CONFIG= qt warn_on release
DEPENDPATH= /root/qt-embedded-free-3.3.4/include
HEADERS=
SOURCES= hello.cpp
INTERFACES=
#------------------------------------------------------------------------------------
生成Makefile
qmake -o Makefile hello.pro
或者用tmake -o Makefile hello.pro
然后
make
就可以了
qvfb -width 320 -height 240 &
sleep 10
./hello -qws
大功告成,你可以欣赏自己的Qt程序了
推荐阅读
- 单片机|自学单片机好找工作吗(会单片机能找什么工作?)
- 单片机|keil把源代码生成lib的方法
- 关于The connected J-Link is defective,Proper operation cannot be guaranteed......的解决办法
- Keil 离线安装packet方法
- android|Android 系列 5.9使用Inkscape创建Android Launcher图标
- 嵌入式开发|使用Visual Studio Code开发Arduino相关配置
- 嵌入式开发|ARM中的汇编指令解读(“.text“、“.data“、“.bss“,“.ascii“、“.byte“、“.short“、“.int“、“.long“、“.word“、“.quad“)
- 来宾操作系统已锁定CD-ROM的大门
- Linux|Linux内核目录结构