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就可以使用了!

【Linux开发】【Qt开发】ARM QT移植详细步骤教程的更多相关文章

  1. iOS开发融云即时通讯集成详细步骤

    1.融云即时通讯iOS SDK下载地址   http://rongcloud.cn/downloads  选择iOS   SDK下载 2.进行应用开发之前,需要先在融云开发者平台创建应用,如果您已经注 ...

  2. 开发环境配置:jdk8的详细安装教程&&tomact的详细安装教程&&java环境变量的配置&&tomcat启动总失败原因

    1.下载 链接: http://pan.baidu.com/s/1i57HZKx 密码: cnb4 2.详细安装过程 3.下载地址 链接: http://pan.baidu.com/s/1mi6VUp ...

  3. 在Linux系统里安装Virtual Box的详细步骤

    今天我试图在Linux 服务器上安装Kyma时,遇到如下错误消息: E1009 23:51:37.685891 358 start.go:174] Error starting host: Error ...

  4. win7下安装linux(centos6.5)双系统详细小白教程

    在正式介绍linux安装教程之前,先声明一下本人也是刚开始接触linux,所以教程只以成功安装linux为目标,里面的具体步骤我都是参考网上的教程自己操作实现的,至于为什么要这么做就不多做解释,大家想 ...

  5. 在linux通过源码编译安装redis详细步骤

    1.下载源码包 [root@localhost opt]# wget http://download.redis.io/releases/redis-4.0.10.tar.gz 2.解压缩redis ...

  6. 图例演示在Linux上快速安装软RAID的详细步骤

    物理环境:虚拟机centos6.4 配置:8G内存.2*2核cpu.3块虚拟硬盘(sda,sdb,sdc,sdb和sdc是完全一样的)        在实际生产环境中,系统硬盘与数据库和应用是分开的, ...

  7. Node.js安装详细步骤教程(Windows版)

    什么是Node.js? 简单的说 Node.js 就是运行在服务端的 JavaScript. Node.js是一个基于 Chrome V8 引擎的 JavaScript 运行环境: Node.js使用 ...

  8. 【Qt开发】【VS开发】【Linux开发】OpenCV、Qt-MinGw、Qt-msvc、VS2010、VS2015、Ubuntu Linux、ARM Linux中几个特别容易混淆的内容

    [Qt开发][VS开发][Linux开发]OpenCV.Qt-MinGw.Qt-msvc.VS2010.VS2015.Ubuntu Linux.ARM Linux中几个特别容易混淆的内容 标签:[Qt ...

  9. 【Qt开发】【Linux开发】Qt程序在嵌入式设备(arm) 上运行,鼠标擦除界面的解决方案

    笔者最近想在arm开发板上,开发一个应用程序,经过网上查询发现qt作为跨平台开发软件很不错,于是便选择了qt开发,笔者的qt版本是4.8.6的.由于arm的主频太低,在arm上进行开发编译,效率会大大 ...

随机推荐

  1. [uboot] (第三章)uboot流程——uboot-spl代码流程(转)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/ooonebook/article/det ...

  2. linux高性能服务器编程pdf免费下载

    百度云盘:链接: https://pan.baidu.com/s/1pLp4hHx 密码: wn4k

  3. sed编辑

    data4.txt this is a test of the test scriptthis is the second test of the trial script data6.txt thi ...

  4. 深入理解JAVA虚拟机 虚拟机执行子系统

    class类文件的结构 java的class类文件中存在两种结构:无符号数和表.最小的存储单元是8个字节. 无符号数是基本的数据类型,用来描述数字,UTF-8编码的字符串,索引引用. 表示多个无符号数 ...

  5. Css min-height max-height min-width max-height

    Css min-height应用地方解释我们有时设置一个对象盒子时候避免对象没有内容时候不能撑开,但内容多少不能确定所以又不能固定高度,这个时候我们就会需要css来设置min-height最小高度撑高 ...

  6. LeetCode - 滑动窗口最大值

    给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧.你只可以看到在滑动窗口内的 k 个数字.滑动窗口每次只向右移动一位. 返回滑动窗口中的最大值. 输入: nums ...

  7. HTTS TTLS 433

    HTTP和HTTPS协议,看一篇就够了 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/x ...

  8. VO(值对象) 与PO (持久对象)

    VO ,值对象 (Value Object) , PO ,持久对象 (Persisent Object),它们是由一组属性和属性的 get 和 set 方法组成.从结构上看,它们并没有什么不同的地方. ...

  9. 将Emacs Org mode用于GTD任务管理

    在上一篇日志中,我简要介绍了如何围绕Emacs Org mode构建个人任务管理系统的基本思路与方法.因为Org mode体系庞大.功能繁杂,本文仅以提纲契领的方式介绍不同环节在Org mode中的操 ...

  10. codevs 1002 搭桥x

    题目描述 Description 有一矩形区域的城市中建筑了若干建筑物,如果某两个单元格有一个点相联系,则它们属于同一座建筑物.现在想在这些建筑物之间搭建一些桥梁,其中桥梁只能沿着矩形的方格的边沿搭建 ...