• QT5.3.2在ARM上的移植


    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
     
    1. export QT_QPA_PLATFORM_PLUGIN_PATH=/opt/Qt-5.3.2/armv7-a/plugins/platforms  
    2. export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0  
    3. export QT_QPA_FONTDIR=/opt/Qt-5.3.2/armv7-a/lib/fonts  
    4. 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

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

     

  • 相关阅读:
    [转]How can I create a design netlist without including my source design files?
    [转]基于FPGA的以太网开发
    [转]GMII/RGMII/SGMII/TBI/RTBI接口信号及时序介绍
    [原]Altium画PCB时鼠标十字不能对准焊盘中心
    [转]Altera特殊管脚的使用(适用全系列Altera FPGA,MSEL区别除外)-来自altera论坛
    [转]STM32正交编码器驱动电机
    [转]使用D触发器制作正交编码器的鉴相电路
    [转]解决STM32开启定时器时立即进入一次中断程序问题
    [转]ISE iMPACT bit生成mcs
    [转]NiosII处理器软件代码优化方法
  • 原文地址:https://www.cnblogs.com/sankye/p/4643173.html
Copyright © 2020-2023  润新知