zoukankan      html  css  js  c++  java
  • 【Linux开发】【Qt开发】ARM QT移植详细步骤教程

    ARM QT移植详细步骤教程

    米尔SAM9X5和A5D3X上默认的Qt版本是4.5.3,当这个版本的Qt库不能满足实际开发需求时,可通过此方法制定Qt开发、运行环境。

    移植的步骤如下:
    1、下载新版qt;
    2、编译tslib;
    3、编译qt;
    4、配置编译后的qt,以便在主机上用qmake编译适用目标板的qt应用;
    5、拷贝lib文件到目标板。

    一、下载qt和tslib

    比如要安装4.8.5版本,则下载 qt-everywhere-opensource-src-4.8.5.tar.gz,
    米尔百度云下载(建议!~):http://pan.baidu.com/s/1i3j5cyT
    官网下载地址:http://download.qt-project.org/archive/qt/
    还要下载tslib,
    米尔百度云盘下载,地址(建议!~):http://pan.baidu.com/s/1fF8gI
    官方下载地址:https://github.com/kergoth/tslib

    二、编译tslib
    1、 建立工作目录
    1. $ cd ~$ sudo make /usr/local/tslib
    2. $ sudo make /usr/local/qt4.8.5-arm
    3. $ mkdir qt-arm
    4. $ cd qt-arm
    复制代码


    2、编译安装tslib
    将下载的tslib源码复制到工作目录,并解压:
    1. $ cp tslib-1.4.tar.gz ./
    2. $ tar xzvf  tslib1.4.tar.gz
    3. $ cd tslib
    复制代码


    3、配置环境
    先安装automake、libtool 两个工具:
    1. $ sudo apt-get install automake libtool
    复制代码
    如果还没有交叉编译器的路径添加到PATH,要先把该路径添加到PATH中,本例使用的交叉编译器的路径为/opt/gcc-linaro-arm- inux-gnueabihf-4.7-2013.04-20130415_linux/bin(一定要指定自己目标板的交叉编译器路径),则执行以下命令:
    1. $ export PATH=$PATH:/opt/gcc-linaro-arm-linux-gnueabihf-4.7-2013.04-2010415_linux/bin
    复制代码


    4、编译
    配置tslib,安装路径可以通过 --prefix 参数设置,这里安装到/usr/local/tslib:
    1. $ ./autogen.sh
    2. $ ./configure CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ --prefix=/usr/local/tslib --host=arm-linux-gnueabihf ac_cv_func_malloc_0_nonnull=yes
    复制代码


    编译安装:
    1. $ make
    2. $ sudo make install
    复制代码

    完成后,tslib会按安装到/usr/local/tslib目录下。
    进入下一步之前,先将/usr/local/tslib/etc/ts.conf文件第二行“#module_raw input”注释去掉,变为“module_raw input”,注意一定要顶格。

    三、编译安装qt
    1、解压
    1. $ cd ~/qt-arm
    2. $ cp qt-everywhere-opensource-src-4.8.5.tar.bz2  ./
    3. $ tar xjvf qt-everywhere-opensource-src-4.8.5.tar.bz2
    4. $ cd qt-everywhere-opensource-src-4.8.5
    复制代码
    2、指定交叉编译器
    打开解压目录下的mkspecs/qws/linux-arm-g++/qmake.conf:
    1. $ vi mkspecs/qws/linux-arm-g++/qmake.conf
    复制代码


    用vi打开qmake.conf 后,将arm-linux-全部替换arm-linux-gnueabihf-(注意:根据自己板子而定,并且一定要先将交叉编译器的路径加入PATH变量中),并加上-lts,然后保存退出,更改后如下:
    1. # modifications to g++.conf
    2. QMAKE_CC                = arm-linux-gnueabihf-gcc -lts
    3. QMAKE_CXX               = arm-linux-gnueabihf-g++ -lts
    4. QMAKE_LINK              = arm-linux-gnueabihf-g++ -lts
    5. QMAKE_LINK_SHLIB        = arm-linux-gnueabihf-g++ -lts
    6. # modifications to linux.conf
    7. QMAKE_AR                = arm-linux-gnueabihf-ar cqs
    8. QMAKE_OBJCOPY           = arm-linux-gnueabihf-objcopy
    9. QMAKE_STRIP             = arm-linux-gnueabihf-strip<font face="黑体"></font>
    复制代码


    3、配置Qt
    如下,先通过 --prefix 指定qt安装的路径,-I后面指定上一步tslib的include路径,-L后面指定上一步tslib的lib路径,

    1. $ sudo mkdir /usr/local/qt4.8.5-arm
    2. $ sudo ./configure --prefix=/usr/local/qt4.8.5-arm -opensource -release -shared -Declarative -importdir /opt/imports -fast -no-largefile -qt-sql-sqlite -qt3support -exceptions -xmlpatterns -no-glib -no-phonon -no-mmx -no-3dnow -no-sse -no-sse2 -svg -no-webkit -qt-zlib -qt-libtiff -qt-libpng -qt-libjpeg -make libs -make tools -nomake examples -nomake docs -nomake demo -no-nis -no-cups -iconv -no-dbus -xplatform qws/linux-arm-g++ -embedded arm -little-endian -qt-freetype -depths 16,24,32 -qt-gfx-linuxfb -qt-gfx-transformed -qt-gfx-multiscreen -no-gfx-vnc -no-gfx-qvfb -qt-kbd-linuxinput -no-kbd-qvfb -armfpa -no-mouse-qvfb -qt-mouse-linuxtp -qt-mouse-tslib -DQT_QLOCALE_USES_FCVT -DQT_NO_QWS_CURSOR -no-pch -I/usr/local/tslib/include -L/usr/local/tslib/lib -confirm-license
    复制代码


    可以执行./configure --help查看参数的详细说明,根据需要来配置合适的参数
    如果配置的时候提示:

        The tslib functionality test failed!
        You might need to modify the include and library search paths by editing
        QMAKE_INCDIR and QMAKE_LIBDIR in
        /home/gary/qt/qt-everywhere-opensource-src-4.8.5/mkspecs/qws/linux-arm-g++.





    说明找不到合适的交叉编译工具,请重新设置PATH环境变量。如果还是不能解决,再修改mkspecs/qws/linux-arm-g++/qmake.conf,将交叉编译工具改为绝对路径,如下:    
    1. # modifications to g++.conf
    2. QMAKE_CC                = /opt/gcc-linaro-arm-linux-gnueabihf-4.7-2013.04-20130415_linux/bin/arm-linux-gnueabihf-gcc -lts
    3. QMAKE_CXX               = /opt/gcc-linaro-arm-linux-gnueabihf-4.7-2013.04-20130415_linux/bin/arm-linux-gnueabihf-g++ -lts
    4. QMAKE_LINK              = /opt/gcc-linaro-arm-linux-gnueabihf-4.7-2013.04-20130415_linux/bin/arm-linux-gnueabihf-g++ -lts
    5. QMAKE_LINK_SHLIB        = /opt/gcc-linaro-arm-linux-gnueabihf-4.7-2013.04-20130415_linux/bin/arm-linux-gnueabihf-g++ -lts

    6. # modifications to linux.conf
    7. QMAKE_AR                = /opt/gcc-linaro-arm-linux-gnueabihf-4.7-2013.04-20130415_linux/bin/arm-linux-gnueabihf-ar cqs
    8. QMAKE_OBJCOPY           = /opt/gcc-linaro-arm-linux-gnueabihf-4.7-2013.04-20130415_linux/bin/arm-linux-gnueabihf-objcopy
    9. QMAKE_STRIP             = /opt/gcc-linaro-arm-linux-gnueabihf-4.7-2013.04-20130415_linux/bin/arm-linux-gnueabihf-strip<font face="黑体"></font>
    复制代码


    4、 编译安装  
    1. $ sudo make
    2. $ sudo make install
    复制代码

    完成后,qt4.8.5即会安装到主机/usr/local/qt4.8.5-arm目录下。

    四、配置编译后的qt,以便在主机上用qmake编译嵌入式qt应用
    1、设置环境变量
    在主机(如Ubuntu)当前终端下执行以下命令:
        
    1. $ export PATH=$PATH:/usr/local/qt4.8.5-arm/bin
    2. $ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/qt4.8.5-arm/lib
    复制代码

    或将以上命令添加到/etc/profile 文件中,这样系统登录时就自动设置好这些环境变量。

    五、移植Qt到开发板
    开发板上要使用的东西就2个,一个是编译后的tslib,一个是编译后qt目录下的lib目录。如下步骤将这两个目录拷贝到开发板上。
    1、打包lib
    我们Qt 安装完成之后,为解决符号链接的问题,可以利用先打包,然后直接解压到开发板的做法:    
    1. $ cd /usr/local/qt4.8.5-arm
    2. $ tar -zcf lib.tar.gz lib
    3. $ cd /usr/local
    4. $tar -zcf tslib.tar.gz tslib
    复制代码

    将打包好的压缩文件 lib.tar.gz 和 tslib.tar.gz 复制到开发板,然后解压:
        
    1. mkdir -p /usr/local/qt4.8.5-arm
    2. tar xzvf lib.tar.gz -C /usr/local/qt4.8.5-arm
    3. tar xzvf tslib.tar.gz -C /usr/loacal
    复制代码

    2、设置开发板上的环境变量
    在目标板上新建一个名为setqtenv的文件,
    1. vi setqtenv
    复制代码

    并加入以下内容:
    1. export LD_LIBRARY_PATH=/lib:$LD_LIBRARY_PATH
    2. export QTDIR=/usr/local/qt4.8.5-arm
    3. export T_ROOT=/usr/local/tslib
    4. export PATH=$T_ROOT/bin:$PATH
    5. export LD_LIBRARY_PATH=$T_ROOT/lib:$QTDIR/lib:$LD_LIBRARY_PATH
    6. export TSLIB_CONSOLEDEVICE=none
    7. export TSLIB_FBDEVICE=/dev/fb0
    8. export TSLIB_TSDEVICE=/dev/input/event0
    9. export TSLIB_PLUGINDIR=$T_ROOT/lib/ts
    10. export TSLIB_CONFFILE=$T_ROOT/etc/ts.conf
    11. export TSLIB_CALIBFILE=/etc/pointercal
    12. export QWS_KEYBOARD=USB:/dev/input/event1
    13. export QWS_MOUSE_PROTO=Tslib:/dev/ input/event0
    14. export QT_QWS_FONTDIR=$QTDIR/lib/fonts
    复制代码


    执行以下命令设置好qt环境变量的设置:
    1. source setqtenv
    复制代码



    OK了,新版本的qt就可以使用了!
  • 相关阅读:
    [Web安全] XXE漏洞攻防学习(中)
    [Web安全] XXE漏洞攻防学习(上)
    [转]kali中eth0网卡突然消失解决方案
    [漏洞复现]CVE-2018-4887 Flash 0day
    [漏洞复现]CVE-2010-2883 Adobe Reader 打开pdf电脑即刻中招
    [漏洞复现] CVE-2017-11882 通杀所有Office版本
    墨菲定律:Mac本硬盘坏了
    独立思考
    阅读书单
    2020未来小思考
  • 原文地址:https://www.cnblogs.com/huty/p/8518293.html
Copyright © 2011-2022 走看看