1.7遇到的问题:
1.在make时出错,提示
In function ‘open’,
inlined from ‘main’ at ts_calibrate.c:229:11:
/usr/include/bits/fcntl2.h:51:24: error: call to ‘__open_missing_mode’ declared with attribute error: open with O_CREAT in second argument needs 3 arguments
make[2]: *** [ts_calibrate.o] Error 1
原因:这是因为open函数的语法不符合最新的gcc,
解决方法:在tslib-1.0源码包中tests/ts_calibrate.c中加入open的第三个参数:
#vim tests/ts_calibrate.c
if ((calfile = getenv("TSLIB_CALIBFILE")) != NULL) {
cal_fd = open (calfile, O_CREAT | O_RDWR, 0777);
} else {
cal_fd = open ("/etc/pointercal", O_CREAT | O_RDWR, 0777);
}
2. 在开发板上执行ts_calibrate程序后出现ts_open:no such file or director的错误
原因:
解决方法:重新配置环境变量
之前使用命令行方式配置的命令如下:
export set TSLIB_FBDEVICE=/dev/fb0
export set TSLIB_TSDEVICE=/dev/event4
export set TSLIB_CONFFILE=/usr/local/etc/ts.conf
export set TSLIB_CALIBFILE=/etc/pointercal
export set TSLIB_PLUGINDIR=/usr/local/lib/ts
换成修改/etc/profile文件方式,在该文件末尾添加以上命令,并执行source /etc/profile使之生效,问题得以解决。
3. 在开发板上执行ts_calibrate程序后出现sigment fault的错误
原因:不小心修改了pointercal文件内容
解决方法:直接删除pointercal文件即可
2.PC-LINUX-QT开发环境搭建2.1 配置、编译安装:
执行./configrue命令进行编译配置并生成Makefile文件
$ sudo ./configure --prefix=/opt/qt-4.8.4
之后输入”o”选择开源版,输入yes接受GNUlicense,如下所示:
[liqiyuan@liqiyuan qt-everywhere-opensource-src-4.8.4]$ sudo ./configure --prefix=/opt/qt-4.8.4
Which edition of Qt do you want to use ?
Type 'c' if you want to use the Commercial Edition.
Type 'o' if you want to use the Open Source Edition.
#o
This is the Open Source Edition.
You are licensed to use this software under the terms of
the Lesser GNU General Public License (LGPL) versions 2.1.
You are also licensed to use this software under the terms of
the GNU General Public License (GPL) versions 3.
Type '3' to view the GNU General Public License version 3.
Type 'L' to view the Lesser GNU General Public License version 2.1.
Type 'yes' to accept this license offer.
Type 'no' to decline this license offer.
Do you accept the terms of either license? yes
Qt is now configured for building. Just run 'gmake'.
Once everything is built, you must run 'gmake install'.
Qt will be installed into /opt/qt-4.8.4
To reconfigure, run 'gmake coNFClean' and 'configure'.
执行编译安装命令:
# make V=99
# make install
说明:因配置安装目录到/opt/目录中,该目录只对root账户有写权限,所以最好使用root权限执行以上命令
$ sudo ./configure --prefix=/opt/qt-4.8.4 是在非root权限下使用的方法
而# make V=99及# make install是已经切换到了root权限下的从”$”和“#”号可以区分。
2.2 环境变量配置
修改~/.bashrc文件
# vim ~/.bashrc
在文件末尾添加以下内容:
QTDIR=/opt/qt-4.8.4
PATH=$QTDIR/bin:$PATH
MANPATH=$QTDIR/man:$MANPATH
LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export QTDIR PATH MANPATH LD_LIBRARY_PATH
说明:若没有配置好环境变量,在QT工程保存后在工程目录下执行qmake *.pro时不能生成Makefile文件,编译过程:(1)#qmake ***.pro (2)#make
2.3遇到问题:
./configure -prefix /opt/qt-4.8.3-arm -embedded arm -release -shared
-fast -no-largefile -qt-sql-sqlite -qt3support -no-xmlpatterns -no-glib
-no-phonon -no-mmx -no-3dnow -no-sse -no-sse2 -no-svg -webkit -qt-zlib
-qt-libtiff -qt-libpng -qt-libjpeg -make libs -nomake examples -nomake
docs -nomake demo -no-nis -no-cups -iconv -no-dbus -openssl -xplatform
qws/linux-arm-g++ -little-endian -qt-freetype -depths 16,24,32 -qt-gfx-linuxfb
-qt-gfx-transformed -qt-gfx-multiscreen -no-gfx-vnc -no-gfx-qvfb -qt-kbd-linuxinput
-no-kbd-qvfb -armfpa -no-mouse-qvfb -qt-mouse-linuxtp -DQT_QLOCALE_USES_FCVT
出现如下错误:
cc1:error:.pch/release-shared-emb-arm/QtGui:NO such file or directory
在配置时添加参数-no-pch
3. QT移植到开发板3.1 安装embedded版Qt
源代码是一样的,重新配置就行了。
./configure -prefix /opt/qt-4.8.4-arm -embedded arm -release -shared -fast -no-largefile -qt-sql-sqlite -qt3support -no-xmlpatterns -no-glib -no-phonon -no-mmx -no-3dnow -no-sse -no-sse2 -no-svg -webkit -qt-zlib -qt-libtiff -qt-libpng -qt-libjpeg -make libs -nomake examples -nomake docs -nomake demo -no-nis -no-cups -iconv -no-dbus -openssl -xplatform qws/linux-arm-g++ -little-endian -qt-freetype -depths 16,24,32 -qt-gfx-linuxfb -qt-gfx-transformed -qt-gfx-multiscreen -no-gfx-vnc -no-gfx-qvfb -qt-kbd-linuxinput -no-kbd-qvfb -armfpa -no-mouse-qvfb -qt-mouse-tslib -DQT_QLOCALE_USES_FCVT -I/opt/tslib-1.0/include -L/opt/tslib-1.0/lib-no-pch
#make
#make install
使用gmake && gmake install 似乎效果一样。
配置选项要根据自己的硬件选取,这样编译出来的库文件才会比较小。
3.2将安装所需文件安装到开发板,并配置开发板QT环境
装好后把目录下的imports、lib、mkspecs 、plugins文件夹拷到开发板上的/opt/Qt目录下,目录随便,和环境变量里的一致就行。然后配置开发板的环境变量,让他能找到Qt,编辑/etc/profile文件:
#vi /etc/profile
在编辑之前先将原文件备个分,#cp /etc/profile /etc/profile_bk18
# Ash profile
# vim: syntax=sh
# No core files by default
#ulimit -S -c 0 > /dev/null 2>&1
export set HOME=/root
export set QTDIR=/opt/Qt
export set QPEDIR=/opt/Qt
export set LD_LIBRARY_PATH=$QTDIR/lib:/usr/local/lib:$LD_LIBRARY_PATH
export set QWS_DISPLAY="LinuxFB:/dev/fb0"
export set QWS_DISPLAY="LinuxFB:mmWidth130:mmHeight100:0"
export set QWS_KEYBOARD="TTY:/dev/tty1"
export set QT_PLUGIN_PATH=$QTDIR/plugins/
export set QT_QWS_FONTDIR=$QTDIR/lib/fonts/
export set PATH=$QPEDIR/bin:$PATH
USER="`id -un`"
LOGNAME=$USER
PS1='[u@h W]# '
PATH=$PATH
……….
保存退出,使用source 命令使之生效
#source /etc/profile
这样配置后在执行通过交叉编译生成的可执行QT程序时才能成功运行。
4.安装Qt Creator
Qt Creator是一个开发Qt程序的IDE,当然也可以完全用命令行进行开发,个人习惯而已。下载地址还是http://qt-project.org/downloads,选择下面的Qt Creator 2.6.0 for Linux/X11 32-bit,如果是64位系统,选择64位版本。下载得到qt-creator-linux-x86-opensource-2.6.0.bin,运行安装即可。
#./qt-creator-linux-x86-opensource-2.7.1.bin
遇到问题:
[liqiyuan@liqiyuan QT]$ sudo ./qt-creator-linux-x86-opensource-2.7.1.bin
[sudo] password for liqiyuan:
No protocol specified
qt-creator-linux-x86-opensource-2.7.1.bin: cannot connect to X server :0.0
问题原因:是跟X server access list有关系
解决方法:在命令行打上一句: xhost +local:USERNAME就OK了!
#xhost +local:USERNAME
再执行QT-CREATOR安装程序
[liqiyuan@liqiyuan QT]$ sudo ./qt-creator-linux-x86-opensource-2.7.1.bin
程序运行成功,然后一直next直到出现如下界面:
5 Qt Creator配置:
从Dash中找到Qt Creator,打开,打开后可以看到主界面,这个界面和Windows下基本一致(后面安装windows版本就清楚了),在前面的两篇文章中我已经分别编译了Linux下的X86平台和ARM平台的QT库,这部分就针对这个IDE进行相应的配置,是能够进行应用程序的开发。
5.1 QT版本设置
在主界面中从菜单栏点击"工具"->"选项"->在左侧点击“构建和运行”界面如下图所示。
从图中可以看到,IDE并没有自动识别安装的QT,这是因为在缺乏系统环境变量的情况下,不知道程序安装到了什么地方,所以这里需要手动设置,手动设置很简单,只需要点击添加,分别添加编译的两个版本的QT安装文件中的qmake文件即可,注意是安装文件,并不是之前解压的源文件。
具体路径可以参见上图。
到这里就告诉IDE 安装QT的位置了,由于需要进行编译开发,接下来还需要指定编译器,点击“编译器”选项卡,如下图所示。
5.2 编译器设置
如图中所示,Qt Creator已经检测到X86的GCC,而我们要是做arm平台开发的话还需要指定用于arm开发的交叉工具链,我的安装路径为/home/share/tmp/opt/EmbedSky/4.4.6/bin需要指定g++文件,如图中所示。配置完成后,点击“应用”。
5.3构建套件设置
QT和编译器指定完成后就需要进行下一步配置了,就是对这些工具进行组合,点击“构建套件(kit)”选项卡,如下图所示。
如上图所示,这里所做的设置也很简单,相当于是设定几种方案,指定设备类型、所用的编译器版本以及QT版本,我这里配置桌面和ARM两项,分别对应在PC和开发板两个平台。
到这里,基本配置就完成了。
6 使用Qt Creator进行初步开发
以上5步完成之后即可进入QT程序开发了,否则嘿嘿
6.1.创建工程(PC下运行)
下面新建一个项目,点击菜单 ”文件“->”新建“,如下图所示,选择应用程序-Qt Gui应用
接下来填写项目名称和选择保存位置,点击”下一步“选择构建套件,这里用于选择使用的构建套件,即上文配置的,按照上文配置我这里就有两个套件,桌面和ARM,这个地方后面是可以更改的,因此我这里还是先选择桌面,下面有对应的Debug与Release这里保持默认。接下来全部保持默认一直到完成。
工程新建完成后就可以看到工程目录即文件了,如下图所示。
第一个例程就不添加啥程序了,充分利用IDE设计的方便之处,拖拽几个控件运行示意一下吧,双击上图中的界面文件下的mianwindow.ui文件,接下来就能看到和VS下利用C#等开发非常类似的界面,可以从左侧选择一些控件,右下角可以针对具体的控件属性进行修改,如下图所示,拖出自己需要的控件,并进行简单修改。
我这里拖了几个作为示意,这部分弄好后,点击左下角的
直接运行,构建完成后就会弹出刚刚设计的界面,如下图所示。
可以看到实际运行效果和编辑的情况由于字体等因素略有差异。
6.2.针对开发板的QT程序
接下来就要生成一个能够在开发板上运行的程序了,由于刚刚在新建项目的时候构建套件选择的是桌面,所以首先要对这点进行更改。如下图所示,点击 ”项目“--”添加构建套件“下方就会弹出我刚刚设定的ARM,在arm的构建设置中可以使用默认配置,其他相关选项可以参考桌面选项更改。
需要说明的是在ARM的运行项目中,需要部署到远程运行,这里没有部署,因此在剪辑编辑进行构建的时候,就不能改直接运行了,点击锤子图标,进行构建,
构建完成后可以在工程文件夹下,如下图所示,那么在arm开发板上运行的程序就在test1-build-ARM-_____Debug文件夹下。
接下来把生成的可执行文件拷贝到开发板进行运行,我使用nfs与开发板共享,将可执行程序拷贝到开发板上的,在开发板终端上进入可执行程序所在目录运行程序;
#./helloQt –qws
说明:我使用的开发板是天嵌的TQ210,上面已经移植好了QTE 4.8.4,其他平台需要先移植QT,运行效果如下:
用于开发板运行的第一个简单小程序就跑起来了,至此QT环境搭建完全成功。
参考资料:
【1】TQ210QT环境搭建参考资料:([url=]Wuyuan's Blog[/url])[url=]http://wuyuans.com/2012/11/qt4-8-3-transplant/[/url]
【2】QT编辑器配置:[url=]http://www.cnblogs.com/emouse/archive/2013/01/29/2881721.html[/url]