实战tiny6410上的QT开发环境搭建与示例程序

2024-02-03 17:38

本文主要是介绍实战tiny6410上的QT开发环境搭建与示例程序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

虚拟机: vmware7 + fedora9
开发板: tiny6410
qt版本:qte4.7.0 (后来移植qt4.7.3也成功了)

1) 在虚拟机上 获得QTE4.7源码并释放且编译
 第一步,获得源码并翻译
在虚拟机上,把qt-everywhere-opensource-src-4.7.0.tar.gz 释放。
释放的目录可以是任何比如    /home/stephen/stephenshare

第二步,编译
在虚拟机上操作

先配置参数:
echo yes| ./configure --prefix /opt/Qt4.7 -opensource -embedded arm -xplatform qws/linux-arm-g++ -no-webkit -qt-libtiff -qt-libmng -qt-mouse-tslib -qt-mouse-linuxtp -no-neon

然后make && make install
请注意这里设了--prefix是/opt/Qt4.7,就安装在这目录下 , 有的时候这个写法不被系统认可,需要写成--prefix=/opt/Qt4.7即加一个“=”号.

在我的双核DUO T7250电脑上,虚拟机768M RAM情况下,编译过程花费了5个小时。

2) 在ARM板上即tiny6410上去部署Qt4.7
把虚拟机上的Qt4.7打包
#cd /opt
#tar cvzf qt4.7.tgz Qt4.7
再以SD卡或nfs方式, 在tiny6410上的/opt目录解压
#cd /opt
#tar xvzf /sdcard/qt4.7.tgz

3) 虚拟机里 QT Creator安装配置及示例编译
在虚拟机里装QT CREATOR,注意是到nokia官方去下载最新的包,现在的安装方式是下载一个20MB的小包,下载后chmod +x 再运行,它会自动上网download全部内容并安装。 安装好的效果和在windows上几乎没差别
安装后,写个简单的程序。 新建qt gui application . 初始编译是生成本地代码即fedora9上的代码,界面像是这样






下面需要安装arm交叉编译器并指定arm的qmake。


设置参数:
第一步,
Tools->Options->Qt4->Qt Versions
加一个qmake location类似这样  /opt/Qt4.7/bin/qmake
第二步,左侧工具栏Projects->Build Settings 的Qt version选qt embbed 4.7.0. 然后点击那个锤子可以交叉编译了,生成了
helloqt4 这是我们的arm可执行文件了。不放心的话可以使用命令file helloqt4看到有arm字样就成功了

请注意有的时候如果不能正确生成交叉编译的文件,请先clean再rebuild all

接下来把helloqt4复制到ARM板的目录下比如/opt/Qt4.7/demos/embedded

4) 在ARM板上改QT配置文件

接下来就是改开机启动文件/etc/init.d/rcS 和 /bin/qt4配置文件
在/etc/init.d/rcS中加入:
echo "now executing /bin/qt4 file" > /dev/tty1
/bin/qt4

代表要执行qt4文件脚本,在这个文件脚本中既有qt4的本身环境变量设置,又有我们试验的要执行的交叉编译的文件helloqt4

a. 需要在/bin/qt4中间部分加入QT相关的变量设置
QTDIR=/opt/Qt4.7
PATH=$QTDIR/bin:$PATH
LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export QTDIR PATH LD_LIBRARY_PATH


b. 在/bin/qt4的尾部加入以下内容:
cd /opt/Qt4.7/demos/embedded
./helloqt4 -qws&

其中-qws参数很重要,代表的是启动qt windows server(因为没有象qtopia一样的图形支持环境)

注意把原来调用qtopia的几行脚本注释掉,以免和这个qte4.7冲突

5)在ARM板上reboot, 可以正确运行啦
显示我们的对话框helloqt4,按X号关闭后,退出了qt界面。
此时界面出现字符状态,并且串口终端激活了,可以按enter进行命令状态进行其它操作。当然,这样的步骤在正式产品上不能出现。所以是否看看不允许用户界面上出现关闭符号会比较好。
另外:由于屏幕及字体原因,有时候字体可能显示的特别小,这时候我们就需要精简qt的fonts目录,比如/opt/Qt4.7/lib/fonts里,只留住特定的字体比如unifont_160_50.qpf即可。其它的字体就不妨建个文件夹临时放进去,以备后用。

6)多任务的运行
补充:-qws是先开启一个qt windows server,然后运行应用程序。如果我们要先后运行2个程序,可以使用后台,即这样:
./helloqt4 -qws&
sleep 3
./another&
这样可以同时在后台运行多个应用程序,且串口终端也可以正常使用。就是非独占式。
为什么要使用sleep 3来延时3秒呢?经过实验,qws服务器有时候是不能立即启动的,需要点时间让它启动,这样后面的程序another才能找服务器,否则可能会提示错误。

7)后记
截止2011年6月9日,笔者把NOKIA官网上的最新的Qt4.7.3也完成了移植,移植过程和上面的Qt4.7.0几乎一样的。

这篇关于实战tiny6410上的QT开发环境搭建与示例程序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/674896

相关文章

VScode连接远程Linux服务器环境配置图文教程

《VScode连接远程Linux服务器环境配置图文教程》:本文主要介绍如何安装和配置VSCode,包括安装步骤、环境配置(如汉化包、远程SSH连接)、语言包安装(如C/C++插件)等,文中给出了详... 目录一、安装vscode二、环境配置1.中文汉化包2.安装remote-ssh,用于远程连接2.1安装2

C语言小项目实战之通讯录功能

《C语言小项目实战之通讯录功能》:本文主要介绍如何设计和实现一个简单的通讯录管理系统,包括联系人信息的存储、增加、删除、查找、修改和排序等功能,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录功能介绍:添加联系人模块显示联系人模块删除联系人模块查找联系人模块修改联系人模块排序联系人模块源代码如下

Java中注解与元数据示例详解

《Java中注解与元数据示例详解》Java注解和元数据是编程中重要的概念,用于描述程序元素的属性和用途,:本文主要介绍Java中注解与元数据的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参... 目录一、引言二、元数据的概念2.1 定义2.2 作用三、Java 注解的基础3.1 注解的定义3.2 内

Java中使用Java Mail实现邮件服务功能示例

《Java中使用JavaMail实现邮件服务功能示例》:本文主要介绍Java中使用JavaMail实现邮件服务功能的相关资料,文章还提供了一个发送邮件的示例代码,包括创建参数类、邮件类和执行结... 目录前言一、历史背景二编程、pom依赖三、API说明(一)Session (会话)(二)Message编程客

SQL Server使用SELECT INTO实现表备份的代码示例

《SQLServer使用SELECTINTO实现表备份的代码示例》在数据库管理过程中,有时我们需要对表进行备份,以防数据丢失或修改错误,在SQLServer中,可以使用SELECTINT... 在数据库管理过程中,有时我们需要对表进行备份,以防数据丢失或修改错误。在 SQL Server 中,可以使用 SE

Golang操作DuckDB实战案例分享

《Golang操作DuckDB实战案例分享》DuckDB是一个嵌入式SQL数据库引擎,它与众所周知的SQLite非常相似,但它是为olap风格的工作负载设计的,DuckDB支持各种数据类型和SQL特性... 目录DuckDB的主要优点环境准备初始化表和数据查询单行或多行错误处理和事务完整代码最后总结Duck

基于Python开发电脑定时关机工具

《基于Python开发电脑定时关机工具》这篇文章主要为大家详细介绍了如何基于Python开发一个电脑定时关机工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 简介2. 运行效果3. 相关源码1. 简介这个程序就像一个“忠实的管家”,帮你按时关掉电脑,而且全程不需要你多做

python实现pdf转word和excel的示例代码

《python实现pdf转word和excel的示例代码》本文主要介绍了python实现pdf转word和excel的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一、引言二、python编程1,PDF转Word2,PDF转Excel三、前端页面效果展示总结一

在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码

《在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码》在MyBatis的XML映射文件中,trim元素用于动态添加SQL语句的一部分,处理前缀、后缀及多余的逗号或连接符,示... 在MyBATis的XML映射文件中,<trim>元素用于动态地添加SQL语句的一部分,例如SET或W

Redis延迟队列的实现示例

《Redis延迟队列的实现示例》Redis延迟队列是一种使用Redis实现的消息队列,本文主要介绍了Redis延迟队列的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习... 目录一、什么是 Redis 延迟队列二、实现原理三、Java 代码示例四、注意事项五、使用 Redi