这几天一直在搭建QT的开发环境,遇到了各种问题,记录一些吧
linux:red hat 6.4
开发板:Micro2440
参考了这几个网上的文章: 都是系列文章,非常的详细。
http://www.cnblogs.com/emouse/archive/2013/01/28/2880142.html
http://blog.csdn.net/z1179675084/article/details/10170673
http://blog.csdn.net/zhaole20094463/article/details/7291829
可能没法截图了,如果出现一些错误的话,一般百度也能解决的。
安装QT 4.8.5 for X11版本(就是PC平台)
下载源码 :http://download.qt-project.org/archive/qt/
解压:
tar xzvf qt-everywhere-opensource-src-4.8.5.tar.gz
mv cp qt-everywhere-opensource-src-4.8.5 cp qt-everywhere-opensource-src-4.8.5-X11
配置:
cd qt-everywhere-opensource-src-4.8.5-X11
//这里X11版本的 直接配置就行了,编译时间是久了点,耐心等待
./configure
输入 o, yes 进行配置,生成Makefile文件,这里要几分钟
编译:
make
这里make 要1~2小时左右
安装:
sudo make install
安装完成,默认安装在 /usr/local/Trolltech/Qt-4.8.5
还有一步,就是设置环境变量,终端输入qmake -v 查看下版本指向,最简单的做法是,直接删除掉/usr/bin/下的qmake,手动创建软链接到/usr/bin 重新 qmake -v 显示版本信息,看下是否对应 X11版本的qmake
设置环境变量如下
//qt-X11.sh #!/bin/bash export QTDIR=/usr/local/Trolltech/Qt-4.8.5 export PATH=$QTDIR/bin:$PATH export MANPATH=$QTDIR/man:$MANPATH export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
PC平台的基本上没遇到有问题,基本顺畅
先不要删除这个文件夹哈,我们还要编译 x86嵌入式平台上的qvfb呢。
安装QT 4.8.5 for x86(嵌入式平台)版本
所谓X86嵌入式平台,理解成PC上的模拟器就行了,如果没有开发板的话,这个是很有必要装的,非常的方便。
解压:
tar xzvf qt-everywhere-opensource-src-4.8.5.tar.gz
mv cp qt-everywhere-opensource-src-4.8.5 cp qt-everywhere-opensource-src-4.8.5 -X86
配置:
cp qt-everywhere-opensource-src-4.8.5-X86
./configure -embedded x86 -qvfb -qt-gfx-qvfb -qt-kbd-qvfb -qt-mouse-qvfb等待几分钟
编译:
gmake
linux环境下,gmake 跟 make 都一样的,这一步也要1-2小时左右,耐心等待
安装:
sudo gmake install
默认安装在 /usr/local/Trolltech/QtEmbedded-4.8.5
基本没遇到啥情况
编译qvfb模拟器
回到刚刚编译X11版本的文件夹
cp qt-everywhere-opensource-src-4.8.5-X11
cd /tools/qvfb
make
之后生成了qvfb默认在qt-everywhere-opensource-src-4.8.5的bin目录下
安装过程中可能出现如下错误。
错误:deviceskin.h:没有那个文件或目录,在ubuntu下:
apt-get install xorg-dev
make
redhat下挂载光盘:rpm -ivh libXtst-devel-1.0.99.2.-3.el6.i686.rpm这里,我没遇到这情况
复制qvfb 到 /usr/local/Trolltech/QtEmbedded-4.8.5/bin 目录下
还有 设置环境变量
//qt-x86.sh #!/bin/bash export QTDIR=/usr/local/Trolltech/QtEmbedded-4.8.5 export PATH=$QTDIR/bin:$PATH export MANPATH=$QTDIR/man:$MANPATH export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
安装QT 4.8.5 for ARM版本
编译这个版本,花了最多的时间。。。。
这里 先编译 tslib(tslib是触摸屏驱动,我们的QT程序要在开发板上跑,比较多的是通过触摸来操作的,所以需要tslib驱动)
编译tslib
下载tslib-1.4.tar.gz
解压:
tar xzvf tslib-1.4.tar.gz
配置:
cd tslib
./autogen.sh
./configure--prefix=/usr/local/tslib/ --host=arm-linux ac_cv_func_malloc_0_nonnull=yes
编译:
make
安装:
sudo make install
生成在 /usr/local/tslib下
基本编译通过,没遇到出错。
编译通过后,cd /usr/local/tslib/bin下,检查下程序类型
[hai@localhost bin]$ file ts_calibrate
ts_calibrate: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.14, not stripped
[hai@localhost bin]$
ARM平台,这样就对了!
开始编译arm平台版本
解压:
tar xzvf qt-everywhere-opensource-src-4.8.5.tar.gz
mv cp qt-everywhere-opensource-src-4.8.5 cp qt-everywhere-opensource-src-4.8.5 -ARM
配置:
//build.sh #!/bin/bash ./configure \ -prefix=/usr/local/Trolltech/QtEmbedded-4.8.5-arm \ -opensource \ -confirm-license \ -release -shared \ -embedded arm \ -xplatform qws/linux-arm-g++ \ -depths 16,18,24 \ -fast \ -optimized-qmake \ -pch \ -qt-sql-sqlite \ -qt-libjpeg \ -qt-zlib \ -qt-libpng \ -qt-freetype \ -little-endian -host-little-endian \ -no-qt3support \ -no-libtiff -no-libmng \ -no-opengl \ -no-mmx -no-sse -no-sse2 \ -no-3dnow \ -no-openssl \ -no-webkit \ -no-qvfb \ -no-phonon \ -no-nis \ -no-opengl \ -no-cups \ -no-glib \ -no-xcursor -no-xfixes -no-xrandr -no-xrender \ -no-separate-debug-info \ -nomake examples -nomake tools -nomake docs \ -qt-mouse-tslib \ -I/usr/local/tslib/include \ -L/usr/local/tslib/lib exit
至于配置选项,应该都能看懂,可以修改安装目录,保持对应就好。
配置这一步,应该会出现一些类似
-qt-kbd-qvfb: unknown argument
-qt-mouse-qvfb: unknown argument
这里,得好好检查下,配置选项,可能是前面某一个选项没有加空格什么,估计很多人都是网页上直接复制配置过来的。
我还遇到了这样的情况
QTE .configure
The tslib functionality test failed!
You might need to modify the include and library search paths by editing
QMAKE_INCDIR and QMAKE_LIBDIR in
这个问题,百度了方法,有些能配置通过,但是make的时候又出现问题,后来还是重新修改下配置选项解决的,开始还以为是tslib没编译好,就反复的在编译tslib...汗
编译:
make
//时间也要1-2小时左右
安装:
sudo make install
根据配置选项,安装在/usr/local/Trolltech/QtEmbedded-4.8.5-arm
环境变量:
//qt-arm.sh #!/bin/bash export QTDIR=/usr/local/Trolltech/QtEmbedded-4.8.5-arm export PATH=$QTDIR/bin:$PATH export MANPATH=$QTDIR/man:$MANPATH export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
好吧,如果一切顺利的话,X11_X86_ARM_qvfb_tslib 都安装完毕,可能中间还会出现一些问题,耐心点吧!
下面先测试下X11平台
设置环境变量:
source qt-X11.sh
检查下
[hai@localhost setenv]$ source qt-x11.sh
[hai@localhost setenv]$ qmake -v
QMake version 2.01a
Using Qt version 4.8.5 in /usr/local/Trolltech/Qt-4.8.5/lib
[hai@localhost setenv]$
成功指向X11平台版本
写个测试程序
qt_hello.cpp #include <QApplication> #include <QLabel> int main(int argc, char **argv) { //初始化 图形 环境变量 QApplication app(argc,argv); QLabel* label = new QLabel; //创建label对象 label->setText("Hello World!"); //设置label内容 label->show(); //显示 return app.exec(); }
//生成项目文件
qmake -project
//生成Makefile文件
qmake
//编译
make
编译完成生成qt_hello
打开:
测试成功!
测试X86平台
source qt-x86.sh
检查下
[hai@localhost setenv]$ source qt-x86.sh
[hai@localhost setenv]$ qmake -v
QMake version 2.01a
Using Qt version 4.8.5 in /usr/local/Trolltech/QtEmbedded-4.8.5/lib
[hai@localhost setenv]$
这里,别忘记,要把编译出来qvfb复制到 /usr/local/Trolltech/QtEmbedded-4.8.5/bin目录下
生成了,qt_hello程序,发现运行不了,这里就要用到qvfb了
终端下输入:qvfb & //后台运行qvfb
会发现出来个小窗口,发现有点小,可以file-configure 设置下size 设置成640X480差不多了,不要关闭哈
好了,这时候,终端里面输入:
./qt_hello -qws
哈,就运行起来了。
这里可能会出现,鼠标使用不了,参考下:http://blog.csdn.net/lushujun2011/article/details/6835333
测试ARM平台
跟上面一样
截图中看出来了,qt_hello是运行在ARM平台上的程序
开发板设置:
nfs火速开起来,
1.复制 上面编译出来tslib到 开发板上
cp tslib /usr/local/ -R
设置下 tslib/etc/ts.conf文件
修改为:
//ts_conf module_raw input module pthres pmin=1 module variance delta=30 module dejitter delta=100 module linear不要留多余空格哈!
2.复制QT4.8.5 lib 到开发板的相同目录下
cp .../QtEmbedded-4.8.5-arm/lib /usr/local/Trolltech/QtEmbedded-4.8.5-arm/lib -R
3.设置环境变量
//setenv-arm.sh export QTDIR=/usr/local/Trolltech/QtEmbedded-4.8.5-arm export T_ROOT=/usr/local/tslib export LD_LIBRARY_PATH=$T_ROOT/lib:$QTDIR/lib:$LD_LIBRARY_PATH export PATH=$QTDIR/bin:$PATH export QWS_MOUSE_PROTO=tslib:/dev/input/event0 export QWS_DISPLAY="LinuxFb:mmWidth100:mmHeight130:0" export QWS_SIZE='240x320' export TSLIB_CONSOLEDEVICE=none export TSLIB_FBDEVICE=/dev/fb0 export TSLIB_TSDEVICE=/dev/input/event0 export TSLIB_PLUGINDIR=$T_ROOT/lib/ts export TSLIB_CONFFILE=$T_ROOT/etc/ts.conf export TSLIB_CALIBFILE=/etc/pointercal这里要注意下,因为大家用的开发板可能不同,请检查好开发板是否存在 /dev/fb0 /dev/input/even0 这些文件, 可能有些开发板是其他名字的,修改一下就行了
4.最后一步,注释下,原来开发板自启动的QT
编辑开发板/etc/init.d/rcS文件
找到类似这样的语句
/bin/qtopia& --> #/bin/qtopia&
注释掉
5.测试
重新启动开发板,nfs挂起来
./qt_hello -qws
发现程序运行起来啦~!如果到这里,能看到界面了,但是鼠标操作不了,回去检查下tslib编译还有QT-arm平台的配置那一步
好了,测试完毕了。
-----------------------------------------------------------
安装Qt_Creator
下载:http://download.qt-project.org/archive/qtcreator/
这里根据需要下载相应的版本,如果是ubuntu可以选择新的版本,red hat 6.4 开始新版本没装上,少了什么库啥的,就没去弄了,我是直接装了2.5.2版本
chmod 777 qt-creator-linux-x86-opensource-2.5.2.bin
./qt-creator-linux-x86-opensource-2.5.2.bin
傻瓜式安装。。。
尝试安装2.8.1版本,打开弹出这样的窗口
换下低版本,如果是最新的Ubuntu的话,就不会出现这样的问题了
安装完毕后,桌面生成Qt Creator快捷方式,双击打开即可。
直接使用上,相信大家都会了,这里说下设置编译器的问题
添加 3个平台的编译器,设置好,到时设计完程序以后,可以相应的选择编译器编译,非常的方便.
打开Qt Creator--Tools--Options
应该大家都会了吧。。。
这里可能有人会出现这样的情况
这个问题是有点坑爹,我开始以为没有编译好,又倒回去重新编译过ARM平台的QT,搞死我了,后来百度找到了解决方法。
ToolChains -- add -- GCCE 定位到arm-linux交叉编译器的
看图就明白了,保存下,是不是正常了?
最后,解决QT中文乱码问题,参考下我的另一篇文章:解决QT中文乱码问题
这里再分享一个技巧,设置下x86运行参数,这样在Qt_Creator可以直接运行就可以了
看图应该明白了吧,加了运行参数,当然要先后台先运行qvfb.
是不是,很方便,哈哈~!