zoukankan      html  css  js  c++  java
  • 嵌入式Qt4.7.1安装详解

    嵌入式Qt 4.7.1安装移植过程详解
    环境:
    Ubuntu 12.04
    VMware 9.0

    qt软件包:qt-everywhere-opensource-src-4.7.1.tar.gz (飞凌自带) 

    http://www.kuaipan.cn/file/id_111560663117095120.htm 访问密码:H17dXX

    交叉工具链4.3.2(参照飞凌技术手册)
    Tslib库的安装(参照飞凌技术手册)

    说明:前面的准备工作和飞凌技术手册当中的一样,因为飞凌没有给Qt 4.7.1的嵌入式版本的移植教程,所以下面我将步骤附上:

     

     

    一、Qt4.7.1安装

     

            在Linux中分别安装应用于不同平台的Qt:PC;嵌入式X86;ARM。

    这三者PC版、嵌入式X86版和ARM版的区别主要体现在:当configure时分别加了不同的参数,具体区别是:

     

    PC平台(X11平台):在linux中全安装qt,用它编译好程序后,直接用“./”就可运行。
    嵌入式X86平台:带有qvfb功能,在PC机上可以模拟应用程序在arm开发板上的运行情况。用此编译好的程序,只用“./”命令不可以运行,必须加上参数 [ -qvfb ]–qws
    Ps:嵌入式X86平台,这个是PC下的一个qtopia,他自带有个模拟器,可以模拟出arm开发板的样子出来。方便调试;
    ARM平台:编译好的程序,用于在arm平台上运行。
    Ps:ARM平台,这个主要是用来编译,因为要下载到开发板上,需要arm版的qte的库文件,编译后直接下载到开发板运行;

    Ps:编译x86是为了得到makeqpf,编译pc是为了得到qvfb

     

    首先解压缩 tar –zxvf qt-everywhere-opensource-src-4.7.1.tar.gz

    并拷贝出三份,分别命名成qt-4.7.1-arm、qt-4.7.1-x86、qt-4.7.1-pc具体步骤如下:

     


    A. 安装PC平台的QT
    1) 配置:进入cd qt-4.7.1-pc,运行./configure -prefix /opt/Qt-4.7.1-pc
    2) 编译:make (时间比较长)

    3) 安装:make install (由于在配置时指定了安装目录,这样将被安装到目录/opt/Qt-4.7.1-pc下)

     

    B. 安装嵌入式X86平台的QT
    1) 配置:进入cd qt-4.7.1-x86,运行的命令,./configure -prefix /usr/local/Trolltech/qt-4.7.1-x86-qvfb -opensource -confirm-license -embedded x86 -qt-gfx-qvfb -qt-kbd-qvfb -qt-mouse-qvfb -make tools -qt-mouse-qvfb
    2) 编译:make (时间比较长)

    3) 安装:make install (由于在配置时指定了安装目录,这样将被安装到目录/opt/Qt-4.7.1-x86-qvfb下)

     

    C. 安装ARM平台的QT/E
    方法I:用飞凌自己编写的脚本build-all,终端下面直接运行./build-all
    方法II:
    1)配置:进入cd qt-4.7.1-arm,然后运行./configure -prefix /usr/local/Trolltech/qt-4.7.1-arm -opensource -confirm-license -release -shared -embedded arm -xplatform qws/linux-arm-g++ -no-qt3support -fast -no-largefile -qt-mouse-tslib -I /usr/local/tslib/include -L /uar/local/tslib/lib -make tools -make demos -make examples -make docs -qt-libjpeg -qt-libpng -qt-libtiff -qt-gif –multimedia
    2) 编译:make (时间比较长)
    3) 安装:make install (由于在配置时指定了安装目录,这样将被安装到目录/opt/Qt-4.7.1-arm下)

    附录III将附上我的各个脚本文件:直接在终端运行./**build-all即可

     

     

    二、Qvfb的安装:

     

    如果要在PC机上使用qvfp,就要手动安装qvfb:
    1)进入目录:cd qt-4.7.1-pc ,cd tools/qvfp
    2)安装:Make

    3)将生成的qvfb可执行文件拷贝到-x86-qvfb文件夹:cp qt-4.7.1-pc/bin/qvfp /opt/qt-4.7.1-x86-qvfb/bin

     

     

    三、测试qvfb

     

    1)启动qvfb:终端输入/opt/qt-4.7.1-x86/bin/qvfb -width 800 -height 480 & 这样就会弹出一个qvfb的窗口;
    2)运行用x86版本的Qt 4.7.1编译的可执行程序test:./test –qws;(root权限)
    3)切换我们的qvfb窗口中,就可以看到test的运行界面了

     

     


    四、MakeQpf制作嵌入式字体

     

    如果你想制作适合嵌入式系统的字库文件,那么就需要x86版本中的makeqpf程序了,当然这个makeqpf只能在qvfb窗口当中才能运行,所以还是需要上面的步骤的;
    1)进入x86-qvfb目录:cd /opt/qt-4.7.1-x86-qvfb/bin/
    2)启动qvfb: ./qvfb -width 800 -height 480 &
    3)运行makeqpf:./makeqpf -qws



     

     

    五,嵌入式Qt 4.7.1程序的移植

     

    先设置环境变量:export PATH=/usr/local/arm/4.4.1/bin/:$PATH
    1、用/opt/Qt-4.7.1-arm/bin/qmake工具编译编写的程序,生成Makefile文件
    2、修改Makefile文件,
    CFLASS = -fno-rtti 
    CXXFLAGS = -fno-rtti
    3、make生成可执行文件
    4、建立开发板环境变量文件env.sh,内容如下:
    由于我之前用的是Qtopia4.4.3版本,所以里面会出现这个版本的信息;
    #export PATH='/opt/Qtopia4.4.3/bin:/sbin:/usr/sbin:/bin:/usr/bin' 程序开机启动可以不要
    #export QPEDIR='/opt/Qtopia4.4.3'程序开机启动可以不要
    #export QTDIR='/opt/Qtopia4.4.3'程序开机启动可以不要
    export QT_QWS_FONTDIR='/opt/Qtopia4.4.3/lib/fonts/'字体目录
    export QWS_DISPLAY='LinuxFb:mmWidth76:mmHeight44:1'
    export QWS_MOUSE_PROTO='Tslib:/dev/input/event1'
    export TSLIB_CALIBFILE='/etc/pointercal' //校准的数据文件,由ts_calibrate校准程序生成
    export TSLIB_CONFFILE='/usr/local/tslib/etc/ts.conf' //配置文件名
    export TSLIB_CONSOLEDEVICE='none' //控制台设备文件名
    export TSLIB_FBDEVICE='/dev/fb0' //设备名
    export TSLIB_PLUGINDIR='/usr/local/tslib/lib/ts' //插件目录
    export TSLIB_ROOT='/usr/local/tslib'
    export TSLIB_TSDEVICE='/dev/input/event1' //触摸屏设备文件名
    export TSLIB_TSEVENTTYPE='H3600'
    export QT_PLUGIN_PATH='/opt/qt-4.7.1/plugins:/opt/qt-4.7.1/qt_plugins/' //插件目录
    export LD_LIBRARY_PATH='/opt/qt-4.7.1/lib' //qt库文件,非常重要

    5、将可执行文件和sh文件放入/目录下面
    6、source /env.sh
    7、./helloworld -qws &


    注意:飞凌文件系统/etc/init.d/rcS中的最后一行的说明:1)/bin/qopia & 表示qtopia2.2.0
    2)/bin/qtopia4 & 表示qtopia4.4.3
    3)/bin/qt4 & 表示qt/e4.7
    1、我们在实际调试的时候,都是通过nfs挂载的形式。当我们运行ts_calibrate的时候,会在/etc目录下生成一个pointercal文件。有时候会因为挂载目录的权限不够,导致无法生成Pointercal文件。这个时候我们可以用chmod 777 etc加个权限。
    2、有时候由于交叉编译工具两没有指定正确,会出现非法指令或者是“ line 1: syntax error: unexpected "("”错误。可以用file ts_calibrate是否是在当前平台上运行的程序,用readelf -a ts_calibrate查看当前的指令集.
    3. export QWS_DISPLAY="LinuxFb:mmWidth100:mmHeight130:0",这句话我们在后面的Qt程序国际化的得到,在移植的所有工作都完成以后,我发现LCD屏山的字体非常小。后来经过多发打听,才知道需要修改这句话。我们把其中的数字值都改为其一半的时候,屏山的字体就比较大了。具体原因有待研究。

    附录I 编译过程中的错误总结:

    1.在Ubuntu下面安装插件工具:
    sudo apt-get install g++
    2.出错信息是在./configure阶段
    Basic XLib functionality test failed!
    You might need to modify the include and library search paths by editing
    QMAKE_INCDIR_X11 and QMAKE_LIBDIR_X11 in /home/zhu/Qt/qt-x11-opensource-src-4.5.2/mkspecs/linux-g++
    其原因就在于需要安装libX11的开发包,在ubuntu/debian里包名都是libX11-dev
    根据以往的经验,在./configure前主动装好下面3个包,基本上就万事大吉了
    sudo apt-get install libX11-dev libXext-dev libXtst-dev
    3.如果出现basic xlib functionality test failed错误,需要安装libX11的安装包,在终端输入sudo apt-get install libX11-dev libXext-dev libXtst-dev
    4.在终端输入make,如果出现cannot find lXrender错误,需要安装libxrender-dev,在终端输入sudo apt-get install libxrender-dev

    附录II 安装tslib的脚本:


    export PATH=/usr/local/arm/4.4.1/bin/:$PATH
    export TOOLCHAIN=/usr/local/arm/4.4.1/
    export TB_CC_PREFIX=arm-linux-
    export PKG_CONFIG_PREFIX=$TOOLCHAIN/arm-linux
    ./autogen.sh
    ./configure --host=arm-linux --cache-file=arm-linux.cache --enable-inputapi=no PLUGIN_DIR=/usr/local/arm/tslib/plugins -prefix=/usr/local/arm/tslib/build -host=arm-linux --cache-file=arm-linux.cache 2>&1 | tee conf_log
    make 2>&1 |tee make_log
    make install

    附录III 安装三个版本Qt4.7.1的脚本文件

    http://www.kuaipan.cn/file/id_111560663117095115.htm 访问密码:lM3Sl1
    http://www.kuaipan.cn/file/id_111560663117095117.htm 访问密码:5oXIFi
    http://www.kuaipan.cn/file/id_111560663117095116.htm 访问密码:MPC9nK
    Pc-build-all:
    #/bin/bash
    rm -fr qt-everywhere-opensource-src-4.7.1
    rm -fr /opt/qt-4.7.1
    tar xfvz qt-everywhere-opensource-src-4.7.1.tar.gz
    cd qt-everywhere-opensource-src-4.7.1
    echo yes | ./configure -opensource -confirm-license -prefix /opt/Qt-4.7.1-pc
    make 2>&1 | tee ../qte4.7.1Makelog && make install
    x86-build-all:
    #/bin/bash
    export PATH=/usr/local/arm/4.3.2/bin:$PATH
    export PKG_CONFIG_PREFIX=$TOOLCHAIN/arm-none-linux-gnueabi
    export TB_CC_PREFIX=arm-linux-
    export TOOLCHAIN=/usr/local/arm/4.3.2
    rm -fr qt-everywhere-opensource-src-4.7.1
    rm -fr /opt/qt-4.7.1
    tar xfvz qt-everywhere-opensource-src-4.7.1.tar.gz
    cd qt-everywhere-opensource-src-4.7.1
    mkdir /opt/Qt-4.7.1-x86-qvfb
    echo yes | ./configure -prefix /opt/Qt-4.7.1-x86-qvfb -opensource -confirm-license -embedded x86 -qt-gfx-qvfb -qt-kbd-qvfb -qt-mouse-qvfb -make tools -qt-mouse-qvfb
    make 2>&1 | tee ../qte4.7.1Makelog && make install
    arm-build-all:
    #/bin/bash
    export PATH=/usr/local/arm/4.3.2/bin:$PATH
    export PKG_CONFIG_PREFIX=$TOOLCHAIN/arm-none-linux-gnueabi
    export TB_CC_PREFIX=arm-linux-
    export TOOLCHAIN=/usr/local/arm/4.3.2
    rm -fr qt-everywhere-opensource-src-4.7.1
    rm -fr /opt/qt-4.7.1
    tar xfvz qt-everywhere-opensource-src-4.7.1.tar.gz
    cd qt-everywhere-opensource-src-4.7.1
    mkdir /opt/Qt-4.7.1-arm
    echo yes | ./configure -opensource -embedded arm -xplatform qws/linux-arm-g++ -no-webkit -qt-libtiff -qt-libmng -qt-mouse-tslib -qt-mouse-pc -no-mouse-linuxtp -prefix /opt/Qt-4.7.1-arm -I /usr/local/tslib/include -L /usr/local/tslib/lib

    make 2>&1 | tee ../qte4.7.1Makelog && make install

     

    完结。

     

    原文出自:http://blog.csdn.net/csf111/article/details/9324277

  • 相关阅读:
    SpringMVC中静态获取request对象 Spring中获取 HttpServletRequest对象【转载】
    springcloud 的loadbalancer 轮询算法切换方法 2021.4.3
    springboot项目启动增加图标
    rabbitmq 端口作用以及修改方法
    centos8 安装rabbitmq
    springcloud config client Value获取不到信息的问题的处理方法
    springcloud config配置git作为数据源然后启动报错 If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.
    Sublime Text的列模式如何操作
    centos8 安装redis
    jQuery简单的Ajax调用
  • 原文地址:https://www.cnblogs.com/dolphi/p/3621967.html
Copyright © 2011-2022 走看看