基于mini2440的Qt移植
花了很长时间,终于把Qt移植到mini2440开发板上了,不能说完全成功,总算是完成一大步,各中过程心酸,废话不多说,下面正式讲解移植过程。
移植环境:
win7系统,虚拟机是ubuntu12.04
友善之臂mini2440开发板
Qt版本:4.8.6 交叉编译器版本:4.4.3
一.虚拟机Qt开发环境的搭建
1.上Qt的官网下载Qt的源码包:http://qt-project.org/downloads,下载版本是4.8.6,也可以下载其他的版本
2.安装Qt所需要支持的文件
sudo apt-get install qt4-dev-tools #开发包
sudo apt-get install qtcreator #IDE
sudo apt-get install qt4-doc #开发帮助文档
sudo apt-get install qt4-qtconfig #配置工具
sudo apt-get install qt4-demos #DEMO源码 QT
3.下载源码包并进行加压
tar zxvf qt-everywhere-opensource-src-4.8..tar.gz
4.进入加压后的文件夹并开始配置
root@rwzhou-virtual-machine:/11rwzhou/qt_leran/qt-everywhere-opensource-src-4.8.# ./configure
在进行配置的过程中会提示:
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 . Type '' to view the GNU General Public License version .
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?
配置完成后会生成Makefile文件,然后执行make语句,执行make的过程会比较长,请耐心等待,不同的电脑配置不同,所花的时间时间也不同,一般是两三个小时,make完成后,就执行make install 指令,完成后将会生成/use/local/Trottrch/Qt-4.8.6文件夹。
其实我们本身的系统就包好有qmake的指令,在//usr/bin目录下,可以使用qmake -v使用查看其版本,版本是不同的。有两种方法可以修改,可以将我们编译生成的qmake添加到环境变量,即/etc/profile文件内,或者修改/usr/bin/下面的qmake的链接路径,查看/usr/bin/qmake的属性可以发现它是链接到/etc/alternatives/qmake,可以进行如下的修改:
root@emouse:/# rm /etc/alternatives/qmake
root@emouse:/# ln -s /usr/local/Trolltech/Qt-4.8./bin/qmake /etc/alternatives/qmake
5.Qt-creator的安装
上官网下载源文件,我下载的是qt-creator-linux-x86-opensource-2.6.1.bin,给该文件添加可执行权限,并运行
chomd u+x qt-creator-linux-x86-opensource-2.6..bin
./qt-creator-linux-x86-opensource-2.6..bin
然后之后的安装就和普通软件的安装时一样的。
安装之后的界面如下图所示:
进行到这里,已经可以使用Qtcreator进行开发,不过我们只是搭建了桌面的开发环境,并没有搭建嵌入式开发平台的环境,所以接下来我们要做的就是搭建嵌入式开发平台环境,这也是比较繁琐的。
嵌入式开发平台环境搭建
1.Tsilib的移植
tslib是电阻式触摸屏用于校准的一个软件库,是一个开源的程序,能够为触摸屏驱动获得的采样提供诸如滤波、去抖、校准等功能,通常作为触摸屏驱动的适配层,为上层的应用提供了一个统一的接口,具体的移植过程请见另一篇博客:http://www.cnblogs.com/rwzhou/p/3830404.html
2.Qt的交叉编译和安装
和pc平台的编译类似,使用我们之前下载的源码包解压,为了对嵌入式平台进行针对的配置,生成一个配置文件:
vim autoconfig.sh
配置文件的内容为:
#!/bin/sh
./configure \
-opensource \
-confirm-license \
-release -shared \
-embedded arm \
-xplatform qws/linux-arm-g++ \
-depths ,, \
-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
这个文件时copy别人的,所以有些语句也不是很懂,-qt-mouse-tslib \表示利用tslib来驱动屏,-I/usr/local/tslib/include \ -L/usr/local/tslib/lib表示利用tslib的库的支持,所有我们在编译tslib时,路径要相匹配,-xplatform qws/linux-arm-g++ \表示使用交叉编译器进行编译。完成后,在终端执行./autoconfig.sh
配置完成后,生成Makefile会有如下提示:
Qt is now configured for building. Just run 'make'.
Once everything is built, you must run 'make install'.
Qt will be installed into /usr/local/Trolltech/QtEmbedded-4.8.-arm To reconfigure, run 'make confclean' and 'configure'.
接下来就是执行make和make install指令,安装完成后会生成安装文件/usr/local/Trolltech/QtEmbedded-4.8.6-arm
3.接下来进行开发板平台的环境的搭建。
将我们生成的Qt的交叉环境库复制到开发板中,目录在/usr/local/Trolltech/QtEmbedded-4.8.6-arm/lib下,可以使用nfs共享的方法将库文件复制到开发板,你可以在开发板自己建立新的文件夹用来存放Qt的库文件,我的放置如下所示:
接下来要设置环境相应的环境变量,修改/etc/profile文件
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONFFILE=/etc/ts.conf
export TSLIB_PLUGINDIR=/lib/ts
export TSLIB_FBDEVICE=/dev/fb0 export QTEDIR=/opt/qtarm //路径一定要对应相应的路径设置
export PATH=$QTEDIR/bin:$PATH
export QT_QWS_FONTDIR=$QTEDIR/lib/fonts //字体库的对应支持
export QWS_MOUSE_PROTO=Tslib:/dev/input/event0 //Qt鼠标设备的枚举者来创建你想要的鼠标设备
export QWS_KEYBOARD=none
export LD_LIBRARY_PATH=/lib:$QTEDIR/lib:$LD_LIBRARY_PATH //库文件的路径 export QWS_SIZE=*
export QWS_DISPLAY="LinuxFb:mmWidth50:mmHeight75:0" //
这是最重要的一步,如果环境变量设置不正确的话是不能正常运行编译好的Qt程序的,具体的问题我们稍后再分析。
4.在Qt-creator进行构建环境的搭建
打开qt-creator,打开工具-选项,进入构建和运行配置目录
首先添加Qt versions,一个是pc平台,一个是arm平台,要选择对应的qmake程序
对应的编译器是gcc和交叉编译器
添加arm的构建套件,下面的配置要对应上具体的选项,这就添加了arm的构建套件
接下来就可以编写个简单的应用程序,构建后下到开发板上能不能上正常使用,例如只是简单的新建一个工程,在编辑框拖入几个控件,然后进行构建,我们可以使用桌面构建进行构建,直接点运行,就会结果出现。
我们可以使用我们新建的arm构建套件进行构建,由于我们的arm构建套件没有进行部署,所以我们直接点击锤子的图标进行构建
只要配置没问题,一般构建就没有问题,构建完成后会在工程目录下生成
该文件夹,接着进入文件夹,找到执行文件并将其下载到开发板中。我的可执行文件名为hello_world,则在终端执行
./hello_world -qws如果能够正常的话应该会在开发板上显示相同的界面,按钮能够点击,且鼠标箭头可以随着触摸笔移动,但是往往会出现问题,我运行这个问题之后,出现的问题如下所示:
QWSTslibMouseHandlerPrivate: ts_open() failed with error: 'No such file or directory'
出现这个问题后,有显示界面,但是移动触摸笔鼠标不会移动,而且还会点击到开发板上本身存在的图标,所以我们需要杀死开发板的界面进程即Qt进程,使用top命令查看进程号,使用kill命令杀死关于Qt的所有进程,然后运行可执行文件,还是出现一样的问题,说明该程序一启动就崩溃,我们看到的只是假的现像。首先我们可以想到的就是环境变量的设置错误,后来就发现环境变量的配置问题,由于其本身就配置有tslib,在路径上发生了冲突,修改之后能够正常显示,总算是成功了。运行可执行文件,可以使用触摸笔进行操作,也可以关闭程序,只是字体和屏幕的大小没有调整好,接下来要做的就是如何调整它。
从这一次,认识环境变量的设置很是重要,稍微不正确将会导致整个程序无法正常运作。fighting!
参考文章:http://www.cnblogs.com/emouse/archive/2013/01/29/2881311.html
基于mini2440的Qt移植的更多相关文章
- 基于mini2440的uboot移植(一)
一.移植环境 虚拟机:ubuntu12.04 uboot源码:u-boot-2008.10.tar.bz2 交叉编译:arm-linux-gcc-4.4.3 简单的记录下编译uboot的过程,要想具体 ...
- 基于STM32的uCGUI移植和优化
基于STM32的uCGUI移植和优化 首先在开始这个说明之前,要简要说明下具体的环境: 编译工具:MDK4.20 开发板:安富莱v2版开发板 调试器:JLink v8盗版 移植篇 相信大家有移植经验 ...
- 基于FPGA的DW8051移植(三)
总结一下问题: 1) http://www.cnblogs.com/sepeng/p/4137405.html 基于FPGA的DW8051移植(一)里面用modelsim观测波形发现程序进入了ida ...
- 基于STM32的uCOS-II移植详解
百度:基于STM32的uCOS-II移植详解 源:基于STM32的uCOS-II移植详解
- QT移植无法启动 This application failed to start because it could not find or load the QT platform
QT配置好在自己机器上可以运行,但在别人机器上一直弹出 "This application failed to start because it could not find or load ...
- 移植QT5.6到嵌入式开发板(史上最详细的QT移植教程)
目前网上的大多数 QT 移植教程还都停留在 qt4.8 版本,或者还有更老的 Qtopia ,但是目前 Qt 已经发展到最新的 5.7 版本了,我个人也已经使用了很长一段时间的 qt5.6 for w ...
- 基于Linux的kfifo移植到STM32(支持os的互斥访问)
基于Linux的kfifo移植到STM32(支持os的互斥访问) 关于kfifo kfifo是内核里面的一个First In First Out数据结构,它采用环形循环队列的数据结构来实现:它提供一个 ...
- 【Linux开发】【Qt开发】ARM QT移植详细步骤教程
ARM QT移植详细步骤教程 米尔SAM9X5和A5D3X上默认的Qt版本是4.5.3,当这个版本的Qt库不能满足实际开发需求时,可通过此方法制定Qt开发.运行环境. 移植的步骤如下: 1.下载新版q ...
- 基于mini2440的Tslib的移植
软件平台: win7系统,虚拟机ubuntu12.04 mini2440开发板 tslib是电阻式触摸屏用于校准的一个软件库,是一个开源的程序,能够为触摸屏驱动获得的采样提供诸如滤波.去抖.校准等功能 ...
随机推荐
- jQuery中方法html()与text()的不同
区别一:html()方法设置或者返回被选元素的内容,其效果类似于操作元素对象的“innerHTML”属性:text()方法设置或者返回被选元素的文本内容,其效果等同于操作元素对象的“textConte ...
- 前端学习 第三弹: JavaScript语言的特性与发展
前端学习 第三弹: JavaScript语言的特性与发展 javascript的缺点 1.没有命名空间,没有多文件的规范,同名函数相互覆盖 导致js的模块化很差 2.标准库很小 3.null和unde ...
- javascript 键盘输入过滤,只能输入数字,小数一位且只能输入5
$("#right_div2 input[type='text'][class='textClass'][id^='asd_']").live("keydown" ...
- XFire最佳实践
前言:XFire是新一代WebService框架,同时也支持与Spring集成,帮助我们方便快速地在Spring框架中开发WebService应用. 本节主要介绍XFire+Spring集成的2种常用 ...
- OLDB读取excel的数据类型不匹配的解决方案(ZT)
1 引言 在应用程序的设计中,经常需要读取Excel数据或将Excel数据导入转换到其他数据载体中,例如将Excel数据通过应用程序导入SQL Sever等数据库中以备使用.笔者在开发“汽车产业链A ...
- [综]前景检测GMM
tornadomeet 前景检测算法_4(opencv自带GMM) http://www.cnblogs.com/tornadomeet/archive/2012/06/02/2531705.html ...
- python基础知识点整理
序列 描述 sequence(序列)是一组有顺序的元素的集合.序列可以包含一个或多个元素,也可以没有任何元素.我们之前所说的基本数据类型,都可以作为序列的元素. 序列有两种:tuple(定值表: 也有 ...
- Google Tensorflow 源码编译(二):Bazel<v0.1.0>
这几天终于把tensorflow安装上了,中间遇到过不少的问题,这里记录下来.供大家想源码安装的参考. 安装环境:POWER8处理器,Docker容器Ubuntu14.04镜像. Build Baze ...
- 【学】AngularJS日记(2)
数组循环放到新生成的li中 <ul ng-init="arr=[12,5,6,394,344]"> <li ng-repeat="item in arr ...
- vbox丢失*MultiArch_amd64.msi或者*MultiArch_x86.msi重新制作
1.去官网下载你缺少这个文件的那个版本的exe文件. 2.下载7-zip软件(就在百度下载,比较小). 3.用7-zip解压这个exe.会出现一个文件夹,大概名字为VirtualBox-4.3.12- ...