天嵌科技 ARM开发社区

 找回密码
 注册

fedora15&TQ210开发板QT环境搭建

热度 5已有 5531 次阅读2013-7-8 19:49 |个人分类:环境搭建| TQ210, 开发环境搭建

PC: linux-fedora15

platform:TQ210-S5PV210+7寸电容屏

源码准备:

触摸屏校正程序:

http://sourceforge.net/projects/tslib.berlios/files/

qt libraries

http://qt-project.org/downloads#qt-lib

qt creator

http://qt-project.org/downloads#qt-creator

我使用的4.8.4

1.安装tslib 1.1 安装目的

为什么要装tslib?主要是为了校准触摸屏以及去抖等功能

下载地址:http://sourceforge.net/projects/tslib.berlios/files/

1.2 配置编译安装

tar -xvjf tslib-1.0.tar.bz2

cd tslib-1.0

./autogen.sh

./configure --prefix=/opt/tslib-1.0 --host=arm-linux ac_cv_func_malloc_0_nonnull=yes

make

make install

prefix后面是安装目录,自己随便定义,

1.3 修改配置文件ts.conf

修改/opt/tslib-1.0/etc/ts.conf,去掉module_raw input 前面的#号,然后把/opt/tslib-1.0里的文件都拷入开发板,比如我放在了/usr/local里。

 

1.4 配置开发板的环境变量

配置开发板的环境变量,让tslib能正常工作。

修改/etc/profile文件,在末尾添加以下内容:

#vi /etc/profile

 

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

保存退出,运行source命令使之生效

#source /etc/profile

1.6 运行

运行/usr/local/bin中的ts_calibrate进行校准,成功的话会出现界面,并让你点击十字符号,完成后会生成/etc/pointercal文件,这是触摸屏的校准配置文件。

运行ts_test程序可以查看校正是否成功,成功后效果图如下:

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_openno 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 安装embeddedQt

源代码是一样的,重新配置就行了。

./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环境

装好后把目录下的importslibmkspecs 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:USERNAMEOK!

#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已经检测到X86GCC,而我们要是做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,这个地方后面是可以更改的,因此我这里还是先选择桌面,下面有对应的DebugRelease这里保持默认。接下来全部保持默认一直到完成。

工程新建完成后就可以看到工程目录即文件了,如下图所示。

第一个例程就不添加啥程序了,充分利用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环境搭建完全成功。

参考资料:

1TQ210QT环境搭建参考资料:(Wuyuan's Bloghttp://wuyuans.com/2012/11/qt4-8-3-transplant/

2QT编辑器配置: http://www.cnblogs.com/emouse/archive/2013/01/29/2881721.html



路过

鸡蛋
3

鲜花

握手

雷人

刚表态过的朋友 (3 人)

发表评论 评论 (22 个评论)

回复 以书入法 2013-7-10 09:21
您好,您用的linux 内核和 yaffs文件系统是天嵌提供的不?
是TQ210/出厂烧录镜像合集/linux镜像不
我好像还是出现问题了
回复 寻梦的感觉 2013-7-10 10:20
以书入法: 您好,您用的linux 内核和 yaffs文件系统是天嵌提供的不?
是TQ210/出厂烧录镜像合集/linux镜像不
我好像还是出现问题了
是的,用的天嵌提供的内核以及文件系统,交叉编译器也是用的天嵌提供的那个4.4.6版
回复 以书入法 2013-7-10 10:31
啊啊啊啊   我成功了 嘎嘎  太感谢了
回复 supil 2013-7-10 15:02
运行一个程序就可以证明移植成功了吗,第二个程序不加qws能启动吗,麻烦看下你有没有这个问题。。。。
http://www.armbbs.net/forum.php?mod=viewthread&tid=16908&extra=page%3D1
回复 以书入法 2013-7-10 15:09
我现在又遇到了一个问题,就是用.pro里面添加webkit支持,通过webView访问网页,但是没法显示网页上的中文,网页上中文的地方出现空白。(移植到板子上运行)
QWebView *view = new QWebView(this);
view->load(QUrl("http://www.baidu.com/"));
回复 寻梦的感觉 2013-7-10 16:27
以书入法: 我现在又遇到了一个问题,就是用.pro里面添加webkit支持,通过webView访问网页,但是没法显示网页上的中文,网页上中文的地方出现空白。(移植到板子上运行)
QWeb ...
这个我都还没搞呢 呵呵 之前有想过这个问题,开发板上不能显示汉字,应该还需要移植汉字相关的库,但具体是哪个我还没有确定,你搞一下吧,搞好了记得分享一下哈
回复 寻梦的感觉 2013-7-10 16:34
supil: 运行一个程序就可以证明移植成功了吗,第二个程序不加qws能启动吗,麻烦看下你有没有这个问题。。。。
http://www.armbbs.net/forum.php?mod=viewthread&tid=1 ...
我的4.8.4也是一样的,学习不深入,这个问题我也不知道为什么,若你没说4.5不一样的话,我还觉得这没什么呢,谢谢
回复 以书入法 2013-7-10 17:43
寻梦的感觉: 这个我都还没搞呢 呵呵 之前有想过这个问题,开发板上不能显示汉字,应该还需要移植汉字相关的库,但具体是哪个我还没有确定,你搞一下吧,搞好了记得分享一下哈
   我现在没有一点眉目........................
回复 寻梦的感觉 2013-7-10 18:02
以书入法:    我现在没有一点眉目........................
呵呵 搞定了 其实移植的那个qt里面已经有汉字字库unifont_160_50.qpf

这样你将以下内容添加到main.cpp里面:
//中文支持      QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));      QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));       //支持Tr中文
  
        QFont font;
       // font.setPointSize(16);
        font.setFamily(("unifont"));


然后将其他需要显示中文的位置用”tr("中文")“的方式
回复 以书入法 2013-7-10 18:17
寻梦的感觉: 呵呵 搞定了 其实移植的那个qt里面已经有汉字字库unifont_160_50.qpf

这样你将以下内容添加到main.cpp里面:
//中文支持      QTextCodec::setCodecForLocale( ...
我的意思是在ui界面添加一个webview
通过webview->load(QUrl("http://www.baidu.com"));
显示网页,但是网页里面有中文的地方就会出现空白,显示不了...
我在main里面添加了中文支持 还是不行
回复 寻梦的感觉 2013-7-10 19:47
那可能是网页的编码方式与QT字库使用的方式不一样,QT库里面没有那种字体吧,这个…………
回复 以书入法 2013-7-11 08:35
寻梦的感觉: 那可能是网页的编码方式与QT字库使用的方式不一样,QT库里面没有那种字体吧,这个…………
   刚解决了,唉,兴奋了一把,不过还是要谢谢你
我把文泉译字库拷贝到板子qt/lib/font/下然后就可以了
wenquanyi_120_50.qpf  拷贝到板子的qt/lib/font/下面
然后在main里面添加
QFont font("wenquanyi“, 12, QFont::Bold);
app.setFont(font);
回复 寻梦的感觉 2013-7-11 09:09
哦 解决了就好,恭喜
回复 yupei6699 2013-7-15 21:59
请问:1.6 运行检测
运行/usr/local/bin中的ts_calibrate进行校准,这里我得Bin目录下面为啥没有这个ts_calibrate文件那?多谢
我用的是 ts_lib_1.4.
回复 寻梦的感觉 2013-7-16 10:02
有可能编译有问题,再检查下,实在不行建议使用1.0再试试,很快的
回复 yupei6699 2013-7-21 18:21
不行啊 ,为啥我得 embeded版本和arm版本无法生成相应的编译目录啊?困扰了很久,谢谢,指点一二
回复 寻梦的感觉 2013-7-22 09:10
请问你是参考我的步骤做的吗?你是说你使用qtcreator建了工程但是没有生成相应目录,还是最终不能编译成可执行文件啊?
回复 以书入法 2013-7-22 16:28
您好,纠结啊,我整了一个tcp服务端到板子上,但是好像接收不到数据...不晓得咋回事,我在pc上没问题,但移植到板子上就接收不到数据...
回复 寻梦的感觉 2013-7-22 18:04
以书入法: 您好,纠结啊,我整了一个tcp服务端到板子上,但是好像接收不到数据...不晓得咋回事,我在pc上没问题,但移植到板子上就接收不到数据...
这个我没搞过,PC上面的库不过有可能你的开发板上面少了网络通行相关的库,有可能你没有刻意去安装但之前就有的,而开发板则不然,不能提供帮助了呵呵祝你成功
回复 以书入法 2013-7-24 11:28
恩,应该是qt裁剪的时候少加了相关的模块支持,可能是出在-no-dbus这个参数上,我再重新搭建一下移植环境看看。。。
no-dbus
-dbus
-dbus-linked

是否编译编译QtDBus模块。dbus是freedesktop下开源的Linux IPC通信机制,本身Linux 的IPC通信机制包括,管道(fifo),共享内存,信号量,消息队列,Socket等。在Qt中DBUS是有单独的模块的,可见其重要性。
12下一页

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号 )

GMT+8, 2024-5-2 16:43 , Processed in 1.062500 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

返回顶部