历史上的今天
返回首页

历史上的今天

今天是:2025年02月01日(星期六)

2020年02月01日 | QT5.3.2在ARM上的移植

2020-02-01 来源:eefocus

ubuntu10.04 准备移植phonon,4.5移植失败。播放声音就出错。。。没办法。转移到QtMutimedia


安装交叉编译工具这里就不提了。。。


1.下载QT5.3.2:http://download.qt.io/archive/qt/


不小下载5.0,这个版本有问题。。。


2.配置


配置时需要注意的几点是:


如果是交叉编译,需要配置 xplatform选项,比如要在arm-linux平台上移植Qt的话,就在配置项中加上 -xplatform linux-arm-gnueabi-g++ ,Qt5支持的交叉平台都可在源码顶层目录中的 qtbase/mkspecs/ 下找到,每个子目录名代表一个交叉平台的名字,移植Qt时应根据自己的实际情况修改平台对应的子目录下的qmake.conf文件,它定义了一些与平台相关的环境变量,如交叉编译器等;


Qt5默认的qreal类型是64bit的double,如果希望用float类型定义qreal,则在配置选项中加入"-qreal float"


进qtbase//mkspecs/linux-arm-gnueabi-g++


修改qmake.conf


# modifications to g++.conf


QMAKE_CC                = arm-linux-gcc


QMAKE_CXX               = arm-linux-g++


QMAKE_LINK              = arm-linux-g++


QMAKE_LINK_SHLIB        = arm-linux-g++


# modifications to linux.conf


QMAKE_AR                = arm-linux-ar cqs


QMAKE_OBJCOPY           = arm-linux-objcopy


QMAKE_STRIP             = arm-linux-strip


load(qt_config)


注意:必须先修改qmake.conf,否则./configure会报错:STL functionality check failed! Cannot build Qt with this STL library.


./configure -xplatform linux-arm-gnueabi-g++ -release -shared -fast -no-largefile -qt-sql-sqlite -qreal float


3.编译


make


会出错,如下:


QT 嵌入式编译出错:cc1: fatal error: .pch/release-shared-emb-arm/QtGui: No such file or directory 解决方案:

 

老的arm-linux-gnu工具链不支持64位,因此需要安装32位库


apt-get install lsb-core  


make


make install


4 移植拷贝


拷贝/usr/local/Qt5.3.2/lib到嵌入式设备/opt/PDA/lib


拷贝/usr/local/Qt5.3.2/plugins到嵌入式/opt/PDA/plugins


运行写好的./Maze


需要说明的是,Qt5.0开始,Qt自身不再单独实现窗口系统,QWS不复存在,取而代之的新机制是QPA(Qt平台抽象),QPA使得Qt对不同平台的支持变得更加灵活,当需要支持一个新平台时,只需为该平台编写一个QPA插件。


With the release of Qt 5.0, Qt no longer contains its own window system implementation: QWS is no longer a supported platform. For single-process use cases, theQt Platform Abstraction is a superior solution......参考 http://qt-project.org/doc/qt-5/embedded-linux.html


编译完Qt后,只需将生成的lib和plugins文件夹拷贝到开发板,另外,当在嵌入式Linux平台上运行应用程序前,应根据自己平台的实际情况提前设置好下面几个环境变量:


[html] view plaincopy

 

export QT_QPA_PLATFORM_PLUGIN_PATH=/opt/Qt-5.3.2/armv7-a/plugins/platforms  

export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0  

export QT_QPA_FONTDIR=/opt/Qt-5.3.2/armv7-a/lib/fonts  

export QT_QPA_GENERIC_PLUGINS=tslib:/dev/touchscreen-1wire  #使用tslib插件  

 

然后就可以运行Qt程序了


以前Qt4的程序在嵌入式Linux平台运行时,需要在命令行输入-qws选项以启动Qt窗口系统服务,如" ./HelloWorld -qws";而使用Qt5后,不再需要-qws,而需要通过-platform来指定要使用的QPA插件,如" ./HelloWorld -platform linuxfb",如果不指定,则用默认的QPA插件,默认的QPA插件通过上面的QT_QPA_PLATFORM变量指定


结果出错:


defaultServiceProvider::requestService(): no service found for - "org.qt-project.qt.mediaplayer"


网上找了半天,只有WINDOWS下的解决办法:http://blog.csdn.net/yangluoning/article/details/40428683


linux下 也一样。。


下载对应的插件:http://mirrors.hust.edu.cn/qtproject/archive/qt/5.3/5.3.2/submodules/qtmultimedia-opensource-src-5.3.2.tar.gz


tar zxvf qtmultimedia-opensource-src-5.3.2.tar.gz


cd  qtmultimedia-opensource-src-5.3.2


qmake


make


把新的库文件替换原来的。

推荐阅读

史海拾趣

Echelon_Corporation公司的发展小趣事

作为一家技术驱动的公司,Echelon始终注重技术创新和产品研发的投入。公司拥有一支专业的研发团队,致力于开发更加先进、更加可靠的产品和技术。同时,Echelon还积极与全球范围内的科研机构、高校等合作,共同推动技术创新和产业升级。这些努力使得Echelon在电子行业始终保持领先地位。

ACEINNA公司的发展小趣事

为了更好地服务全球客户,Echelon实施了全球化战略。公司不仅在美国加州设立了总部,还在欧洲和亚洲的多个国家和地区设立了办事处,包括中国、法国、德国、意大利、香港、日本、韩国、荷兰及英国等。这些办事处的建立,使得Echelon能够更好地了解当地市场需求和客户需求,并提供更加及时和专业的服务。

e2v technologies公司的发展小趣事

随着电子行业的快速发展,e2v不断拓展其产品线,以满足市场的多样化需求。除了传统的图像传感器产品外,公司还开发了示波器数据转换器、高性能图像处理器等,广泛应用于科学、医学、工业、汽车和电信等领域。这些产品的推出,不仅拓展了e2v的市场空间,也为其带来了可观的经济效益。

CINTERION公司的发展小趣事

随着汽车行业的快速发展和智能化趋势的加强,CINTERION针对汽车市场推出了专用级M2M模块。其中,AC75i和AC65i作为第六代汽车级模块,以其高度的集成性、稳定性和安全性受到了市场的广泛认可。这些模块的推出,不仅满足了汽车行业对无线通信技术的需求,也进一步巩固了CINTERION在汽车M2M市场的领先地位。

Atlantic Microwave Ltd公司的发展小趣事

Atlantic Microwave Ltd公司成立于电子科技蓬勃发展的年代,初期只有几名志同道合的工程师,他们怀揣着对微波技术的热情,在狭小的办公室中开始了他们的创业之旅。资金短缺、技术难题、市场认可度低等问题接踵而至。然而,团队凭借着对技术的执着追求和对市场的敏锐洞察,不断攻克技术难关,优化产品设计,逐渐在市场上站稳了脚跟。

China Semiconductor Corp公司的发展小趣事

随着公司实力的不断增强,CSC开始将目光投向海外市场。公司积极实施国际化战略,在海外设立研发中心和生产基地,拓展国际市场。同时,CSC也加强了与国际同行的交流与合作,吸收借鉴国际先进经验和技术,不断提升自身的国际竞争力。通过国际化布局和全球视野的拓展,CSC逐渐成为了国际半导体产业的重要一员。

这五个故事只是CSC公司发展历程中的一部分缩影,但它们却充分展示了CSC在电子行业中的崛起之路。从初创时期的艰辛与突破,到技术创新的不断突破,再到市场拓展与品牌建设、产业链整合与协同发展以及国际化布局与全球视野的拓展,每一个阶段都凝聚了CSC人的智慧和汗水。正是这些努力和付出,使得CSC在激烈的国际竞争中脱颖而出,成为了中国半导体产业的佼佼者。

问答坊 | AI 解惑

大功率LED封装的要点

replyreload += \',\' + 380115;Timson,如果您要查看本帖隐藏内容请回复…

查看全部问答>

contact ID 协议 (安定宝协议)

我们公司现在做一个报警控制器,需要支持Contact Id 协议,但自己以前没有做过,而且那个协议文档写的不是很清楚,希望以前做过的能指点一下,或者也可以和我们公司合作(你以前做过硬件电路和软件实现)。 QQ:275556641 Email: yuangangaaa@163 ...…

查看全部问答>

wince6.0 支持TransparentBlt吗?

wince6.0 支持TransparentBlt吗?我在调试的时候该函数返回一直是0,不知道是为什么?各位大虾指导下!…

查看全部问答>

PB 下如何实现USB键盘和鼠标

想问一下Core OS\\Core OS Services\\USB Host Support下的内容已经Add to OS Desgin,但USB的键盘和鼠标还是没有用,并且开机时蜂鸣器长响,是什么原因? 另外,Device Drivers\\USB Function 和USB Host 之间的区别?…

查看全部问答>

创意手工LED发光怀表

LED怀表”这是一个DIY作品,作者觉得这可能是第一个LED怀表,来自Paul,其对祖父留下来的一个旧怀表进行改造,当然能用的也只有怀表的外壳。   怀表里面一共安装了133个LED,每一个都是手工焊接而成,LED可显示60秒、60分钟和12小时,另外还有一 ...…

查看全部问答>

怎样破解iarewarm5.30?

我下的iar ewarm5.30照别个说的方法怎么补能破解呢? 未命名.JPG (53.53 KB) 下载次数:7 2010-6-15 20:52 …

查看全部问答>

请问IARSTM8的中断程序怎么搞?最好能提供个范本,谢谢!

                                 请问IAR STM8的中断程序怎么搞?最好能提供个范本,谢谢!…

查看全部问答>

帮忙看看2407的程序吧

帮忙看看2407点灯的程序吧,为什么lacc    #8语句中输入>8的数时,在单步调试运行时,延时程序就跳不出来了,好像死机了似的。可是lacc    #8语句中输入<=8的数就什么问题都没有。快帮忙看看吧,我都在这个问题上停留好长 ...…

查看全部问答>

谈喇叭阻抗问题。

  大家都知道喇叭最常见的是8欧阻抗,用万用表量,通常在8欧左右,小功率的就不说了。如上图这个8欧30W喇叭,满载电压约为15.5V 1.9365A,自损损耗就是30W,这样一算我就怀疑了,它上面标的8欧30W,30W是输出功率还是自身损耗呢???(喇 ...…

查看全部问答>

选择深度睡眠还是深度掉电?

对于LPC1114,想让它平时不工作,当按键按下时打醒它,进而用它控制电路其它部分上电,不知道平时让它在深度睡眠模式还是深度掉电模式啊?…

查看全部问答>