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就可以使用了!
  • 相关阅读:
    数据库表结构变动发邮件脚本
    .net程序打包部署
    无法登陆GitHub解决方法
    netbeans 打包生成 jar
    第一次值班
    RHEL6 纯命令行文本界面下安装桌面
    C语言中格式化输出,四舍五入类型问题
    I'm up to my ears
    How to boot ubuntu in text mode instead of graphical(X) mode
    the IP routing table under linux@school
  • 原文地址:https://www.cnblogs.com/huty/p/8518292.html
Copyright © 2011-2022 走看看