Qt/Qte 4.7.2开发环境搭建及Micro2440的移植笔记

发布者:WhisperingSong最新更新时间:2024-07-02 来源: elecfans关键字:Qt  Qte  7  开发环境  Micro2440  移植 手机看文章 扫描二维码
随时随地手机看文章

虽然网上有不少关于这方面的资料,想了想还是自己写个总结,毕竟各人有各人的问题,这篇文章也主要是作为个人的学习记录,需要的朋友可以参考哈,老手高手们就不用看了哈。。


之前已经搭建过友善之臂提供的qtopia-2.20开发环境,但用着用着愈发觉着不爽。为何??Qtopia-2.20是基于Qt-Embedded2.3的。2.3版本哪!!!现在Qt/Qte的最新版本是Qt4.8beta。虽然用qtopia2.2的朋友还不少,但是作为新手的小弟,入门学的是现在流行的4.x版本(实际上Qt4.x也发行很久了吧),在PC上编译测试无错的程序拿到qtopia中编译便错漏百出,原因很明显的就是因为版本问题。2.3版本果断无法支持4.x的。于是便有了下文。


好了。前言类的废话说的有点多了。现在进入正题。



1.材料准备



先从官网上下载Qt的源码包


http://qt.nokia.com/downloads-cn


注意,从4.6版本起,Qt的嵌入式版本还有PC版本已经集合为一个包了,所以你只需下载一个源码包即可。


图方便的话就下个Qt SDK,里面集成了Qt库(PC版),Qt Creator,省去了编译Qt PC版的麻烦。


还有友善之臂提供的qtopia文件系统包 root_qtopia.tar.gz 下载见这篇文章


http://www.linuxidc.com/Linux/2011-08/40398.htm


(官网上的好像更新为Rootfs_qtopia_Qt4,当然有Qt4版的就更好了)


我电脑上的源码包是 qt-everywhere-opensource-src-4.7.2.tar.gz,友善的qtopia文件系统包 root_qtopia.tar.gz,同时还有Qt SDK:qt-sdk-linux-x86-opensource-2010.05.1.bin,系统为Ubuntu 11.04。



2.搭建开发环境



这一部分分为三步,分别为编译Qt的PC版,嵌入式开发x86版,嵌入式开发arm版。简单解释下Qt的这三个版本。PC版用于开发PC桌面应用。x86版编译后的程序运行于PC端的qvfb模拟器,是为了模拟程序在目标平台上的运行情况。而arm版的Qt通过交叉编译得到在arm开发板上运行的程序。



编译PC版Qt



将源码包 qt-everywhere-opensource-src-4.7.2.tar.gz 复制到 /tmp目录下,解压,配置,编译,安装



tar zvf qt-everywhere-opensource-src-4.7.2.tar.gz

cd qt-everywhere-opensource-src-4.7.2

./configure -prefix (yourWay)

make

make install


编译过程相当漫长,图方便的话就安装Qt SDK吧,里面集成了Qt4.7.0库,Qt Creator和相关开发工具。


直接 ./qt-sdk-linux-x86-opensource-2010.05.1.bin 安装(我就是SDK安装的)


实际上如果不需要作桌面开发的话,这一步完全可以省去



编译x86版本Qte



在原目录下 make clean ,重新配置编译文件



make clean

./configure -prefix /opt/QtEmbedded-4.7.2/x86 -embedded x86 -qt-gfx-qvfb -qt-kbd-qvfb -qt-mouse-qvfb

make

make install


 编译安装完成后还需要编译qvfb,进入PC版安装目录,我的是SDK安装,目录是qtsdk-2010.05



cd qtsdk-2010.05/qt/tools/qvfb

http://www.cnblogs.com/bin/qmake qvfb.pro


此时错误出现了



WARNING: /opt/qtsdk-2010.05/qt/tools/qvfb/qvfb.pro:38: Unable to find file for inclusion /tools/shared/deviceskin/deviceskin.pri 


查找deviceskin.pri:


locate deviceskin.pri


输出:(找不到的话 updatedb 更新下数据库)


/opt/qtsdk-2010.05/qt/tools/shared/deviceskin/deviceskin.pri


很明显应该是qvfb.pro出错,于是vi之,定位到38行:


include($$QT_SOURCE_TREE/tools/shared/deviceskin/deviceskin.pri)




查看文件发现其中并没有对QT_SOURCE_TREE的定义,而后面还有两处引用到QT_SROUCE_TREE,于是在前面添加该变量的定义


QT_SOURCE_TREE=/opt/qtsdk-2010.05/qt



再次qmake便没有错误了。编译的时候我的机子上面是报错了,视各人环境而异,我就把错误简单列出来并给出我的解决方法:



缺少XTest.h     --->    安装libXtst-dev

缺少XInput.h    --->    安装libxi-dev

缺少libGLU.so    --->    /usr/lib下只有libGLU.so.1,所以增加软链接:ln -s libGLU.so.1 libGLU.so

缺少libGL.so    --->    在/usr/lib下建立到/usr/lib/mesa的软链接 ln -s /usr/lib/mesa/libGL.so.1 /usr/lib/libGL.so


编译完成后把qvfb的可执行文件复制到/opt/QtEmbedded-4.7.2/x86/bin中



编译arm版本Qte


#请确认是否安装 arm-linux-gcc,可以到友善的官网下,我用的是他提供的4.3.2版本。



编译前还需安装tslib以支持触摸屏,下载地址:


 http://www.linuxidc.com/Linux/2011-08/40398.htm


这个包是可用的,不过配置完configure后还需要小改Makefile


找到/usr/local/arm/4.4.3/bin/,由于我机子之上装的是4.3.2,路径为/usr/local/arm/4.3.2,所以把这段改为/usr/local/arm/4.3.2/bin。


编译  -->  安装:make --> make install


进入 qt-everywhere-opensource-src 目录,make clean,新建myconfig文件,编辑如下:



#!/bin/sh

./configure

-prefix /opt/QtEmbedded-4.7.2/arm

-opensource

-confirm-license

-release -shared

-embedded arm

-xplatform qws/linux-arm-g++

-depths 16,18,24

-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

-D__ARM_ARCH_5TEJ__

-qt-mouse-tslib -I/usr/local/tslib/include -L/usr/local/tslib/lib


最后一个给出的是tslib安装的路径。


上面这段编译参数也是我从网上找的,可以通过 ./configure --help 查看相关信息


编译前最好检查一下下列几个包是否安装,否则编译时会出错:


libpng-dev,  libjpeg-dev, libzlib-dev




接下来就是编译安装的阶段了:


make


make install


至此,Qt/Qte的开发环境搭建就算完成了。



3.移植


我是用nfs作为根文件系统来启动开发板的。默认下Ubuntu是不装nfs服务的,所以必须在主机上安装nfs。


apt-get install nfs-kernel-server


安装nfs-kernel-server会同时安装nfs-common和portmap,nfs-common是nfs客户端服务,portmap提供端口映射服务,RPC(远程调用,nfs是基于RPC的)使用时portmap必须运行。



简单讲下nfs服务的配置



首先配置protmap



vi /etc/default/portmap, 如果有 “-i 127.0.0.1”字符串就将其去掉。


vi /etc/hosts.deny  (拒绝访问的IP地址,这里对所有的都禁用)


portmap:ALL

lockd:ALL

mountd:ALL

rquotad:ALL

statd:ALL


vi /etc/hosts.allow  (允许访问的IP地址,添加你所允许的进去)


portmap:192.168.1.

lockd:192.168.1.

mountd:192.168.1.

rquotad:192.168.1.

statd:192.168.1.


保存后重启portmap服务以使配置生效:


/etc/init.d/portmap restart



接着配置nfs服务



vi /etc/exports


/opt/FriendlyARM/Micro2440/root_qtopia          *(rw,sync,no_root_squash)

/opt/FriendlyARM/Micro2440/root_qtopia 是共享的目录,*表示对所有的IP开放,rw表示有读写权限,sync表示同步读写,no_root_squash表示登录用户有root权限

(说明一下在我的PC上portmap中的hosts.allow要设为*,exports也要设为*才能够正常启动,这个问题我一直没搞懂,恳请大家指点!)



重新加载以使配置生效


service nfs-kernel-server reload


如果nfs服务还未启动则:


exportfs -r


service nfs-kernel-server start




程序移植


接着把前面准备的root_qtopia压缩包挪到/opt/Friendly/Micro2440,解压得到root_qtopia目录,把Qte相关库文件和tslib库文件copy到root_qtopia目录下:


cd /opt/FriendlyARM/Micro2440/root_qtopia

mkdir ./usr/local/Qte-4.7.2

cp -r /opt/QtEmbedde-4.7.2/arm/lib ./usr/local/Qte-4.7.2

cp -r /usr/local/tslib ./usr/local/


这样子就把arm板平台环境搭好了。



用交叉网线连接PC机和开发版。注意一定是要交叉网线。有路由器的话可以分别连到路由器上,这样PC也可以上网。


然后设置PC机和开发板的IP地址,我这里PC机设为:192.168.1.100;开发板设为:192.168.1.200 。


开发板设为NAND - FLASH启动。连接串口终端。


上电,并“快速”的按下开发板上 K1 ~ K6任意一按键,进入supervivi模式。



##### FriendlyARM BIOS 2.0 for 2440 #####                                       

[x] format NAND FLASH for Linux                                                 

[v] Download vivi                                                               

[k] Download linux kernel                                                       

[y] Download root_yaffs image                                                   

[a] Absolute User Application                                                   

[n] Download Nboot for WinCE                                                    

[l] Download WinCE boot-logo                                                    

[w] Download WinCE NK.bin                                                       

[d] Download & Run                                                              

[z] Download zImage into RAM                                                    

[g] Boot linux from RAM                                                         

[f] Format the nand flash                                                       

[b] Boot the system                                                             

[s] Set the boot parameters                                                     

[u] Backup NAND Flash to HOST through USB(upload)                               

[r] Restore NAND Flash from HOST through USB                                    

[q] Goto shell of vivi                                                          

[i] Version: 0945-2K                                                            

Enter your selection: q                                                         

Supervivi> param set linux_cmd_line 'console=ttySAC0 root=/dev/nfs nfsroot=192.168.1.100:/opt/FriendlyARM/Micro2440/root_qtopia

       ip=192.168.1.200:192.168.1.100:192.168.1.255:255.255.255.0:hust-cassvin:eth0:off'

Supervivi> boot


如果开发板能启动qtopia图形界面,那么恭喜你,nfs文件系统挂载成功。接下来就可以做程序移植了。



修改/opt/FriendlyARM/Micro/root_qtopia/bin/qtopia以添加环境变量


将原来的:


export TSLIB_TSDEVICE=/dev/input/event0 

export TSLIB_CONFFILE=/usr/local/etc/ts.conf

export TSLIB_PLUGINDIR=/usr/local/lib/ts

export TSLIB_CALIBFILE=/etc/pointercal

export QTDIR=/opt/Qtopia

export QPEDIR=/opt/Qtopia

export PATH=$QTDIR/bin:$PATH

export LD_LIBRARY_PATH=$QTDIR/lib:/usr/local/lib:$LD_LIBRARY_PATH


修改为:

[1] [2]
关键字:Qt  Qte  7  开发环境  Micro2440  移植 引用地址:Qt/Qte 4.7.2开发环境搭建及Micro2440的移植笔记

上一篇:root_qtopia-20100108.tar.gz与tslib-1.4下载
下一篇:制作 micro2440开机Logo for Linux

推荐阅读最新更新时间:2024-11-10 16:48

IBM收购红帽已见成效,2019年Q4净利润大涨
当地时间 2019 年 7 月 9 日,红帽公司发布官方新闻称,公司已经正式被 IBM 收购,总股本价值约 340 亿美元。目前来看,IBM 这笔收购很是成功,效果是立竿见影的。 据国外媒体报道,当地时间周二 IBM 公布截至 12 月 31 日的 2019 财年第四季度财报。报告显示,IBM 当季营收为 218 亿美元,较上年同期增长近 0.1%,华尔街此前预测为 216 亿美元;净利润为 36.7 亿美元,较上年同期增长 88.1%。 IBM 公布的第四季度营收超出分析师的预期,打破了连续 5 个季度下滑的不利局面,也从侧面说明公司进入混合云市场的努力开始显出效益。财报公布后,公司股票在盘后交易中大幅上涨 4%。
[嵌入式]
IBM收购红帽已见成效,2019年Q<font color='red'>4</font>净利润大涨
I2C通讯的C语言程序
#include INTRINS.H #include stdio.h #include reg51.h sbit SCK=0x91;//时钟线端口 sbit SDA=0x90;//数据线端口 #define I2C_Address 0xa0 //I2C芯片地址 #define nop _nop_() #define NOP nop;nop;nop;nop;nop;nop//延时应大于4.7us //开始信号 //在时钟线为高电平时,数据线由高向低跳变. void StartI2C(void) { SCK=1; SDA=1; NOP; SDA=0; NOP; SCK=0
[单片机]
基于AB类放大器设计的4x50W车用音频功率放大器
AXPA17850是深圳能芯半导体推出的一款AB类车用音频功率放大器,其最大输出功率为4x50W(14.4V电源电压,4Ω负载)或者4x85W(14.4V电源电压,2Ω负载)。在10%的失真度条件下,输出功率可达4x30W(14.4V电源电压,4Ω负载)或者4x55W(14.4V电源电压,2Ω负载)。芯片设计采用先进的高压BCD工艺,瞬时承压能力超过50V,对于车载环境下电池电压在负载突变时的大幅度跳变提供了强有力的保护。 AXPA17850采用AB类放大器设计,在音质方面完胜D类音频功率放大器,并且不会对车上的其他设备产生电磁干扰。产品提供四路独立的信号通路,一颗芯片就能够满足车载应用左右及前后喇叭的驱动。高集成度的设计使得
[嵌入式]
基于AB类放大器设计的<font color='red'>4</font>x50W车用音频功率放大器
美光科技Q2营收47.97亿美元 净利润下滑75%
北京时间3月26日,美光科技发布2020财年第二财季财报。报告显示,公司第二财季营收47.97亿美元,相比之下去年同期为58.35亿美元,上一季度为51.44亿美元;净利润为4.05亿美元,与去年同期的16.19亿美元相比下降75%,而上一季度为4.91亿美元。 图:3月25日美光收盘价 一方面,美光与国内手机厂商合作逐渐增加。此前有消息称,美光科技将为Redmi K30 Pro提供LPDDR5 DRAM,可以在降低功耗的同时,提升约50%的数据访问速率。但由于整个手机市场萎靡,新客户的增加未必能对冲疫情造成负面影响。 另一方面,半导体行业市场调研公司DRAMeXchange曾认为,由于疫情影响,在家办公成为
[嵌入式]
美光科技Q<font color='red'>2</font>营收47.97亿美元 净利润下滑75%
高通CEO:华为的迅猛发展令高通客户取消部分4G订单
8月1日,高通发布了2019财年第三财季财报。据凤凰网科技报道,高通CEO史蒂夫·莫伦科夫(Steve Mollenkopf)表示,由于华为在中国手机市场的突飞猛进,使中国的不少高通客户开始重点发展5G,并取消了许多4G机型订单,进而影响了高通公司的业绩展望。 此前,高通发布的2019财年第三财季财报显示,高通第三财季营收为96亿美元,净利润为21亿美元,均同比增长超过70%,营收不及预期。并在今日早晨的盘后交易中,跌幅达5%。
[网络通信]
高通CEO:华为的迅猛发展令高通客户取消部分<font color='red'>4</font>G订单
车联网技术大起底,从V2P到V2X,自动驾驶的未来会是怎样的?
在人人讨论人工智能的时代,ADAS(先进辅助驾驶)要怎么演进到AV(全自动驾驶),很显然靠单车的感知和运算能力,我们永远无法实现全路段全天候的自动驾驶。 其中的理由显而易见,感知是有范围和限制的,无论是人类还是人工智能。你无法看见或听见墙后的人,摄像头和雷达也一样。 比如现今主流的摄像头+毫米波雷达的硬件布置下,对于道路标示不清晰、天气影响以及遮挡物的综合识别能力依然没有质的提升。举个例子,大雾天气下对前车车距和车速的识别,以及道路交通参与者(车或人)从视觉盲区中突然出现。 而且比较难以接受的事实就是,尽管我们可以不断优化识别能力和车辆控制的决策和执行速度,但是有些物理定理并没有办法改变。单车的感知和决策,受限于
[汽车电子]
车联网技术大起底,从V<font color='red'>2</font>P到V<font color='red'>2</font>X,自动驾驶的未来会是怎样的?
Android 13 DP1曝光谷歌Pixel 7与Pixel 7 Pro的代号
据9to5Google报道,Android 13 DP1的发布揭示了一些关于谷歌新芯片的进一步信息。 去年,有人发现了代号为“Cloudropper”的下一代Tensor芯片,其型号为GS201,预计将为Pixel 7系列手机提供动力。 开发者cstark27的一个可信来源发现,GS201芯片将采用目前尚未发布的三星调制解调器,型号为“g5300b”。与此同时,Pixel 6配备了“g5123b”,即Exynos Modem 5123。根据相关性,未发布的调制解调器很可能实际上是Exynos Modem 5300。 该代码还显示了与Exynos Modem 5300相关的另外三个设备代号。其中两个是“Cheetah”和
[手机便携]
台积电7nm制程再夺博通AI芯片大单
博通推出已获硅认证(silicon-proven)的7纳米IP核,将以特殊应用芯片(ASIC)抢攻当红的人工智能(AI)、5G及高宽带网络等市场。博通为客户打造的7纳米ASIC去年底完成设计定案,博通也说明将把7纳米ASIC晶圆代工及CoWoS封装订单交由台积电负责。 台积电7nm制程领先同业,继业界传出苹果新一代A12应用处理器、AMD新一代Vega绘图芯片、高通新一代Snapdragon手机芯片等,均将采用台积电7nm制程投片外, 博通也确定将采用台积电7纳米制程打造ASIC平台,抢进需求强劲的AI及高速网络等市场。 博通基于台积电7nm制程打造ASIC平台,并宣布领先业界推出7nm制程硅认证的IP核,其中包括高速序列串行解串
[半导体设计/制造]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved