zoukankan      html  css  js  c++  java
  • 移植qt5.3.1到arm

    近期刚入手一款开发板(比較低端,刚毕业工作还没一个月。穷屌丝一个)。在学校曾经都是用的是Friendly Arm的6410,使用的qt版本号是使用的最多的4.7.0版本号,入手的板子是4.7.4。qt5出来也有好长的时间了。当中提供了非常多的特性,所以这次移植的是qt5的最新版本号5.3.1。

    第一步准备好源代码包,这里须要qt的源代码包。和tslib包。tslib我使用的是开发板提供的包。

    设置交叉编译环境,我使用的是friendly arm的交叉工具。将其加到PATH中。


    然后看看是不是已经成功安装。

    编译tslib,相关的资料能够找资料,这边就不再赘述了。

    我把qt源代码包解压到~/software文件夹下,重命名为qte-5.3.1。我们是在arm板上移植,须要知道芯片的架构。我的是arm9,其架构是armv5te。我们进入/home/zhou/software/qte-5.3.1/qtbase/mkspecs/linux-arm-gnueabi-g++文件夹下,须要改动qmake.conf文件。例如以下

    #
    # qmake configuration for building with arm-linux-gnueabi-g++
    #

    MAKEFILE_GENERATOR      = UNIX
    CONFIG                 += incremental
    QMAKE_INCREMENTAL_STYLE = sublib


    //加入的内容
    QT_QPA_DEFAULT_PLATFORM = linuxfb
    QMAKE_CFLAGS_RELEASE   +=-O2 -march=armv5te
    QMAKE_CXXFLAGS_RELEASE +=-O2 -march=armv5te

    include(../common/linux.conf)
    include(../common/gcc-base-unix.conf)
    include(../common/g++-unix.conf)

    //加入的内容
    QMAKE_INCDIR += /home/zhou/software/tslib1.4-icool2416-v1.0/_install/usr/include  
    QMAKE_LIBDIR += /home/zhou/software/tslib1.4-icool2416-v1.0/_install/usr/lib

    # modifications to g++.conf
    QMAKE_CC                = arm-linux-gcc//这边须要依据你安装来设计,我的是arm-linux-xx
    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_NM                = arm-linux-nm -P
    QMAKE_STRIP             = arm-linux-strip
    load(qt_config)

    板子比較低端,仅仅能使用framebuffer,假设支持opengl es。能够使用eglfs。qt5将显示都做成了插件形式,这提供了很多其它的灵活性,具体的内容能够去看qt5的文档。

    我编译使用的脚本

    #!/bin/sh
    echo 'build Qt5 for embedded linux Author Zhou Xiang'
    mkdir _install
    $PWD/configure -v
                   -prefix $PWD/_install
                   -release
                   -make libs
                   -xplatform linux-arm-gnueabi-g++
                   -optimized-qmake
                   -pch
                   -qt-sql-sqlite
                   -qt-libjpeg
                   -qt-zlib
                   -no-opengl
                   -no-sse2
                   -no-openssl
                   -no-nis
                   -no-cups
                   -no-glib
                   -no-xcursor -no-xfixes -no-xrandr -no-xrender
                   -no-separate-debug-info
                   -nomake examples -nomake tools
    make && make install


    你能够具体的依据自己的须要配置,事实上大部分的配置我都没看过。在qte-5.3.1目录下执行这个脚本即可。

    然后将_install目录下的lib,plugin和include复制到你想放置的地方,我放置在opt/qte-5.3.1下。tslib生成usr目录,我直接复制到arm板的根目录下。对/etc/profile进行配置,例如以下

    export TSLIB_ROOT=/usr
    export QT_ROOT=/opt/qte-5.3.1
    export TSLIB_TSDEVICE=/dev/touchscreen
    export TSLIB_CALIBFILE=/etc/pointercal
    export TSLIB_CONFFILE=/usr/etc/ts.conf
    export TSLIB_PLUGINDIR=/usr/lib/ts
    export TSLIB_CONSOLEDEVICE=none
    export TSLIB_FBDEVICE=/dev/fb0
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib
    export QWS_MOUSE_PROTO=tslib:/dev/touchscreen
    export LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib:$QT_ROOT/lib:$LD_LIBARAY_PATH
    export QT_QPA_PLATFORM_PLUGIN_PATH=$QT_ROOT/plugins
    export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0
    export QT_QPA_FONTDIR=$QT_ROOT/lib/fonts
    export LD_PRELOAD=/usr/lib/preloadable_libiconv.so:$TSLIB_ROOT/lib/libts.so
    export QT_QPA_GENERIC_PLUGINS=tslib

    配置ts.conf,假设像我这样,其在/usr/ect文件夹下

    module_raw input
    module pthres pmin=1
    module variance delta=30
    module dejitter delta=100
    module linear

    这样我们就配置好了。

    以下就是交叉编译我们的项目。事实上非常easy。就是用qte-5.3.1/_install/bin/qmake一下,然后直接make就ok了。

    一开试我执行程序./talkroom -platform linuxfb -plugin tslib总是报

    Couldnt load module pthres                                                      
    Error configuring                                                               
    : No such file or directory
    想了各种办法,然后发现。是libts.so没有载入,然后在LD_PRELOAD加入了

    export LD_PRELOAD=/usr/lib/preloadable_libiconv.so:$TSLIB_ROOT/lib/libts.so。正常了。

    qt5.3.1比較为客户着想,其将窗口边框去了,并且屏幕上没有鼠标的光标了。更加想提供给触摸屏是使用。



    第二张图是点击的,其获得了焦点。






  • 相关阅读:
    内部排序一
    安全的文件访问方式
    Json序列化
    对进度条的通用封装实现
    关于'//'解答
    jquery中美元符号($)命名冲突
    linux 文件属性与权限
    【层次查询】Hierarchical Queries之亲兄弟间的排序(ORDER SIBLINGS BY)
    How to create a freehand tool
    C# 获取COM对象 ProgId ClsId
  • 原文地址:https://www.cnblogs.com/yutingliuyl/p/6938320.html
Copyright © 2011-2022 走看看