1、安装ubuntu下所使用QT
可以使用命令直接安装:
sudoapt-get install qt4-dev-tools qt4-designer qt4-doc qt4-qtconfigqt4-demos qt4-qmake libqt4-sql-mysql qdevelop
上面列出的是qt配置环境所必须的软件包
qt4-dev-tools 包含了Qt Assistant及Qt Linguist等工具,因此不需要单独安装这两个工具。
qt4-doc 是帮助文档,包含了Qt中各个类库的详细说明以及丰富的例子程序,可以使用Qt Assistant 工具来打开阅读。
qt4-qtconfig 是配置Qt环境的一个对话框,一般默认就行了,很少有必要去更改。
qt4-demos 包含很多可以运行起来的可执行文件以及源代码。
qt4-designer是用来设计GUI界面的设计器
卸载的时候使用apt-get remove XXXX 一一卸载即可
2、安装arm版qt
下载qt-everywhere-opensource-src-4.7.1.tar.gz(或者其他版本)
解压后执行如下命令
cd qt-everywhere-opensource-src-4.7.0
echo yes | ./configure -opensource -embedded armv7 -xplatform qws/linux-arm-g++ -no- webkit -qt-libtiff -qt-libmng -qt-mouse-tslib -qt-mouse-pc -no-mouse-linuxtp -no-neo n
make && make install
配置选项可以自己修改
3、使用arm版本的QT
在上一步中安装完成ARM版本QT,默认安装目录一般为/usr/local/Trolltech/QtEmbedded-4.7.0-arm
为了使用此编译器,将其bin目录添加至环境变量,但是为了防止多个版本的qmake快捷方式冲突,所以在这里最好将bin/下的qmake改名
这个细节可以参考我的另一篇博文“Linux-Ubuntu 杂散问题总结”中的第二点
我将其改名为qmake-arm
另外还可以按自己的需求在/etc/bash.bashrc中添加一些其他的信息:
export ARMQTDIR=/usr/local/Trolltech/QtEmbedded-4.7.0-arm
export PATH=/usr/local/Trolltech/QtEmbedded-4.7.0-arm/bin:$PATH
export MANPATH=$ARMQTDIR/man:$MANPATH
export LD_LIBRARY_PATH=$ARMQTDIR/lib:$LD_LIBRARY_PATH
export QMAKESPEC=/usr/local/Trolltech/QtEmbedded-4.7.0-arm/mkspecs/qws/linux-arm-g++
这些工作完成之后,就可以编译程序了
来到存放工程文件的目录下,执行如下命令:
# qmake-arm -project (生成工程文件)
# qmake-arm (生成Makefile)
# make (编译)
之后就能生成一个可执行文件(在arm中运行的可执行文件)了,将此文件拷贝至arm开发板中运行即可
但是此时arm中并没有qt的库,所以要将ubuntu下qte路径下的库拷贝至ARM的lib下
4、ARM下带有opencv的QT
把这个搞定何其容易,据我所知很多人搞了几个星期不止...
我曾尝试过在qtcreator中进行编译,opencv库的路径添加至.pro文件,但是各路错误令人窒息,最终放弃还是选择命令行的方式
有了上一点编译程序的基础,我们编译opencv的程序也会很快~
重要的一点是修改qmake.conf文件,此文件位于../mkspecs/qws/linux-arm-g++/qmake.conf
将opencv的路径添加进去:
注意这里的opencv是arm版本的opencv,至于如何编译可以参考我的另一篇博文:opencv在arm开发板上的移植
这里的路径是我的opencv安装路径(当然这不是一个好路径,因为对公共路径/usr/local进行了污染)
之后的工作和第三点相同,只是编译好的文件她也只承认这个路径下的opencv库
所以在ARM开发板中,无论你之前将她放在什么位置,你要在这里重新放一份
但是在可执行文件的运行过程中,一般会碰到各种缺少库的错误,下面一点将会介绍各种库的交叉编译
5、一些qt可能要使用到的库的交叉编译:
编译这些库基本都使用了./config配置,对于她的介绍大家可以自行百歌,我想了想就不写这个科普文了
这些库编译成功后当然都要拷贝到arm下
(1)tslib
触摸屏库的移植
1).解压源码
# tar -zxvf tslib-1.4.tar.gz
# cd tslib-1.4
2).执行autogen.sh脚本生成configure文件
# ./autogen.sh
3).生成Makefile文件
# echo"ac_cv_func_malloc_0_nonnull=yes">arm-linux.cache
# ./configure --host=arm-linux --prefix=/home/william/arm-linux-lib/tslib --cache-file=arm-linux.cache
说明:
l --cache-file 定义一个临时的缓冲文件,当重新进行配置时可利用此文件加快配置速度,默认情况下是不用这个文件的。
l 如果不添加echo"ac_cv_func_malloc_0 _nonnull=yes">arm-linux.cache会报错:
ts_test.o: In function `main':
ts_test.c:(.text+0x1d8): undefinedreference to `rpl_malloc'
fbutils.o: In function`open_framebuffer':
fbutils.c:(.text+0xa20): undefinedreference to `rpl_malloc'
4).编译安装
#make
#make install
5).修改/tslib/etc/ts.conf文件
module_rawinput
modulepthres pmin=1
modulevariance delta=30
moduledejitter delta=100
modulelinear
修改完成后将整个安装文件拷贝到开发板下的/usr目录下
6).修改开发板系统/etc/profile中添加如下代码:
exportTSLIB_ROOT=/usr/tslib_install
exportTSLIB_TSDEVICE=/dev/event0
exportTSLIB_CALIBFILE=/etc/pointercal
exportTSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
exportTSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
exportTSLIB_CONSOLEDEVICE=none
exportTSLIB_FBDEVICE=/dev/fb0
exportLD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib
7).在开发板上测试触摸屏校正程序
./home/tslib/bin/ts_calibrate
(2) pnglib
#./configure --host=arm-linux --prefix=/home/wiliam/arm-linux-lib/png --enable-shared --enable-static
#make
#make install
相关问题:
(1)在qtcreator中使用qte的时候如果出现一堆如下错误:
QT_INSTALL/include/QtCore/qatomic_arm.h:131: Error: no such instruction: `swpb %al,%r13b,[%rbx]'
则是armv7版的指令集才能识别swpb汇编指令
在编译的时候重新改成./configure -opensource -embedded armv7即可
(2)No qmlviewer installed 问题的解决
在qtcreator中添加 ARM 平台编译环境的设置后可能出现“No qmlviewer installed”告警信息
这是因为没有安装 qmlviewer 或 qmlviewer 安装后的可执行文件没有处于 qt-4.7.1/bin 目录下
针对后一种情况只需从 qmlviewer 的安装目录(一般在/usr/bin 目 录下)里将 qmlviewer, qmlpuppet, qmlprofiler, 和 qmlplugindump 复制到 qt-4.7.1/bin 目录下。
而针对未安装 qmlviewer 的情况,安装方法如下:在 ubuntu12.04 中打开 linux 终端,输入以下命令: # apt-get install qt4-qmlviewer
注意: qmlviewer 的默认安装目录为/usr/bin 安装 qmlviewer 后重新添加 ARM 平台编译环境的设置, “No qmlviewer installed”告 警信息消失