QT5.3.2在ARM上的移植
2015-07-13 16:04
519 查看
ubuntu10.04准备移植phonon,4.5移植失败。播放声音就出错。。。没办法。转移到QtMutimedia
安装交叉编译工具这里就不提了。。。
1.下载QT5.3.2:http://download.qt.io/archive/qt/
不小下载5.0,这个版本有问题。。。
2.配置
配置时需要注意的几点是:
如果是交叉编译,需要配置xplatform选项,比如要在arm-linux平台上移植Qt的话,就在配置项中加上-xplatformlinux-arm-gnueabi-g++,Qt5支持的交叉平台都可在源码顶层目录中的qtbase/mkspecs/下找到,每个子目录名代表一个交叉平台的名字,移植Qt时应根据自己的实际情况修改平台对应的子目录下的qmake.conf文件,它定义了一些与平台相关的环境变量,如交叉编译器等;
Qt5默认的qreal类型是64bit的double,如果希望用float类型定义qreal,则在配置选项中加入"-qrealfloat"
进qtbase//mkspecs/linux-arm-gnueabi-g++
修改qmake.conf
#modificationstog++.conf
QMAKE_CC=arm-linux-gcc
QMAKE_CXX=arm-linux-g++
QMAKE_LINK=arm-linux-g++
QMAKE_LINK_SHLIB=arm-linux-g++
#modificationstolinux.conf
QMAKE_AR=arm-linux-arcqs
QMAKE_OBJCOPY=arm-linux-objcopy
QMAKE_STRIP=arm-linux-strip
load(qt_config)
./configure-xplatformlinux-arm-gnueabi-g++-release-shared-fast-no-largefile-qt-sql-sqlite-qrealfloat
3.编译
make
会出错,如下:
老的arm-linux-gnu工具链不支持64位,因此需要安装32位库
apt-getinstalllsb-core
make
makeinstall
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插件。
WiththereleaseofQt5.0,Qtnolongercontainsitsownwindowsystemimplementation:QWSisnolongerasupportedplatform.Forsingle-processusecases,theQtPlatformAbstractionisasuperiorsolution......参考http://qt-project.org/doc/qt-5/embedded-linux.html
编译完Qt后,只需将生成的lib和plugins文件夹拷贝到开发板,另外,当在嵌入式Linux平台上运行应用程序前,应根据自己平台的实际情况提前设置好下面几个环境变量:
[html]viewplaincopy
exportQT_QPA_PLATFORM_PLUGIN_PATH=/opt/Qt-5.3.2/armv7-a/plugins/platforms
exportQT_QPA_PLATFORM=linuxfb:tty=/dev/fb0
exportQT_QPA_FONTDIR=/opt/Qt-5.3.2/armv7-a/lib/fonts
exportQT_QPA_GENERIC_PLUGINS=tslib:/dev/touchscreen-1wire#使用tslib插件
然后就可以运行Qt程序了
以前Qt4的程序在嵌入式Linux平台运行时,需要在命令行输入-qws选项以启动Qt窗口系统服务,如"./HelloWorld-qws";而使用Qt5后,不再需要-qws,而需要通过-platform来指定要使用的QPA插件,如"./HelloWorld-platformlinuxfb",如果不指定,则用默认的QPA插件,默认的QPA插件通过上面的QT_QPA_PLATFORM变量指定
结果出错:
defaultServiceProvider::requestService():noservicefoundfor-"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
tarzxvfqtmultimedia-opensource-src-5.3.2.tar.gz
cdqtmultimedia-opensource-src-5.3.2
qmake
make
把新的库文件替换原来的。
安装交叉编译工具这里就不提了。。。
1.下载QT5.3.2:http://download.qt.io/archive/qt/
不小下载5.0,这个版本有问题。。。
2.配置
配置时需要注意的几点是:
如果是交叉编译,需要配置xplatform选项,比如要在arm-linux平台上移植Qt的话,就在配置项中加上-xplatformlinux-arm-gnueabi-g++,Qt5支持的交叉平台都可在源码顶层目录中的qtbase/mkspecs/下找到,每个子目录名代表一个交叉平台的名字,移植Qt时应根据自己的实际情况修改平台对应的子目录下的qmake.conf文件,它定义了一些与平台相关的环境变量,如交叉编译器等;
Qt5默认的qreal类型是64bit的double,如果希望用float类型定义qreal,则在配置选项中加入"-qrealfloat"
进qtbase//mkspecs/linux-arm-gnueabi-g++
修改qmake.conf
#modificationstog++.conf
QMAKE_CC=arm-linux-gcc
QMAKE_CXX=arm-linux-g++
QMAKE_LINK=arm-linux-g++
QMAKE_LINK_SHLIB=arm-linux-g++
#modificationstolinux.conf
QMAKE_AR=arm-linux-arcqs
QMAKE_OBJCOPY=arm-linux-objcopy
QMAKE_STRIP=arm-linux-strip
load(qt_config)
注意:必须先修改qmake.conf,否则./configure会报错:[code]STLfunctionalitycheckfailed!CannotbuildQtwiththisSTLlibrary.
./configure-xplatformlinux-arm-gnueabi-g++-release-shared-fast-no-largefile-qt-sql-sqlite-qrealfloat
3.编译
make
会出错,如下:
QT嵌入式编译出错:cc1:fatalerror:.pch/release-shared-emb-arm/QtGui:Nosuchfileordirectory解决方案:
老的arm-linux-gnu工具链不支持64位,因此需要安装32位库apt-getinstalllsb-core
make
makeinstall
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插件。
WiththereleaseofQt5.0,Qtnolongercontainsitsownwindowsystemimplementation:QWSisnolongerasupportedplatform.Forsingle-processusecases,the
编译完Qt后,只需将生成的lib和plugins文件夹拷贝到开发板,另外,当在嵌入式Linux平台上运行应用程序前,应根据自己平台的实际情况提前设置好下面几个环境变量:
[html]
exportQT_QPA_PLATFORM_PLUGIN_PATH=/opt/Qt-5.3.2/armv7-a/plugins/platforms
exportQT_QPA_PLATFORM=linuxfb:tty=/dev/fb0
exportQT_QPA_FONTDIR=/opt/Qt-5.3.2/armv7-a/lib/fonts
exportQT_QPA_GENERIC_PLUGINS=tslib:/dev/touchscreen-1wire#使用tslib插件
然后就可以运行Qt程序了
以前Qt4的程序在嵌入式Linux平台运行时,需要在命令行输入-qws选项以启动Qt窗口系统服务,如"./HelloWorld-qws";而使用Qt5后,不再需要-qws,而需要通过-platform来指定要使用的QPA插件,如"./HelloWorld-platformlinuxfb",如果不指定,则用默认的QPA插件,默认的QPA插件通过上面的QT_QPA_PLATFORM变量指定
结果出错:
defaultServiceProvider::requestService():noservicefoundfor-"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
tarzxvfqtmultimedia-opensource-src-5.3.2.tar.gz
cdqtmultimedia-opensource-src-5.3.2
qmake
make
把新的库文件替换原来的。
相关文章推荐
- Qt批量操作Excel
- SPOJ QTREE6 lct
- HTML5 仿QT 示例Drag and Drop Robot 换装机器人
- 【Qt】字符编码、乱码总结
- Qt跨平台的一个例程
- SPOJ QTREE4 lct
- MQTT-SN协议乱翻之小结篇
- MQTT-SN协议乱翻之实现要点
- MQTT-SN协议乱翻之功能描述
- MQTT-SN协议乱翻之消息格式
- MQTT-SN协议乱翻之简要介绍
- MQTT 3.1.1,值得升级的6个新特性
- MQTT 3.1协议非严肃反思录
- MQTT协议笔记之mqtt.io项目HTTP协议支持
- MQTT协议笔记之mqtt.io项目Websocket协议支持
- MQTT协议笔记之订阅
- MQTT协议笔记之消息流
- qt4.7 opengl基础实例
- MQTT协议笔记之发布流程
- MQTT协议笔记之连接和心跳