zoukankan      html  css  js  c++  java
  • [转]QT 4.5.2 嵌入式开发平台的搭建

    原文

    QT 4.5.2 嵌入式开发平台的搭建
    系统环境:ubuntu 9.04
    编译环境:crosstool 0.43 安装后生成4.1版本的arm-linux-GCC
    在配置之前,sudo apt-get install build-essential 来安装基本的开发环境

    Qtx11(源码安装) 安装准备 
    建议直接下二进制程序安装。
    1.安装依赖的库,你也可以不转,再安装出错的时候补上。
    sudo apt-get install libxrender-dev libxrandr-dev libxcursor-dev libxinerama-dev libxi-dev libxt-dev libglib2.0-dev -libxtst-dev 
    这个是我刚装完系统后根据QTx11编译错误一个一个跟踪出来的,并不能保证是所有的安装依赖。

    2.然后进入源代码顶层目录输入
    ./configure -qt-sql-sqlite -plugin-sql-sqlite -nomake demos -nomake examples -silent 
    其中的编译参数可以自己根据./configure -help里面的提示筛选。

    Qt-embedded 安装准备
    1.如果你的交叉工具组都是以arm-linux-开头的则直接进行下面的步骤就行了,否则要有两个方法,一就是给你的工具组做软连接,然他们的前缀为 arm-linux-。推荐用这办法。二是打开Qt-embedded的源码目录,修改 mkspecs/qws/linux-arm-g++/qmake.conf,将里面的arm-linux-改成你交叉编译工具的前缀。
    2.
    打开qt-embedded-linux-opensourcesrc4.5.2/src/gui/embedded/qmouselinuxtp_qws.h
    在里添加如下两个宏定义,其原因不知道,还望高人指教,这是在网上搜集资料是看到的,我试过不添加,则下面提供的配置选项生成的Qt-embedded库编译出来的程序不能使用触摸屏。如果有人使用tslib触摸屏驱动成功移植的,也请分享一下。
    #define QT_QWS_IPAQ
    #define QT_QWS_IPAQ_RAW

    3.进入源代码顶层目录输入:
    ./configure -embedded arm -little-endian -qt-sql-sqlite -plugin-sql-sqlite -no-scripttools -no-nis -no-largefile -no-libmng -no-accessibility -depths 16 -nomake docs -nomake demos -nomake examples -qt-zlib -feature-THREAD -feature-CONCURRENT -feature-SOUND -feature-EFFECTS -no-feature-CURSOR -silent

    同理,上面的配置参数可以根据嵌入式应用的需要,进行裁剪,把不需要的东西都去掉,这对嵌入式应用来说是非常重要的,不仅可以节省空间也提高效率。

    Qt Creator 安装
    Qt Creator 是一款轻量级的IDE,我用它的目的就是为了方便QT程序的交叉编译。
    1.如果Qtx11是从源码安装的,则不带Qt Creator,这时可以去官方网站下载二进制程序安装。安装好后,打开Qt Creator->Tools->options 然后在左边的导航栏展开Qt4,选Qt Versions。点击右上的加号图标,在version name里可以随便填,主要用来区分X86 和 arm 等Qt库的版本,在路径选到之前安装QTx11 库的路径,默认安装是在 /usr/local/Trolltech/QtEmbedded-4.5.2,然后点击rebuild,如果看到打对勾,则一切正常。同理,可以在添加 上QtE-arm的库。
    2.现在可以建立一个项目来玩玩,也可找到Qt-embedded的源码包,里面有一个触摸屏校正程序,在exampleqws mousecalibration,这个程序是嵌入式设备必须的,不然触摸屏是不能使用的。用Qt Creator打开其中的mousecalibration.pro文件。在Qt Creator左边,点击Projects。在Build Settings 勾上Release,Qt Version 选 之前你为QTE-arm库起的名字,然后build就生成适合开发板运行的QT程序了。

    配置环境变量,方便用别的IDE和命令行调用qmake moc 等程序
    用编辑器打开~/.profile文件添加如下,保存注销就生效。
    # set PATH so it includes Qt4.5.2 X11 bin if it exists
    if [ -d "/usr/local/Trolltech/Qt-4.5.2/bin" ] ; then
    PATH="/usr/local/Trolltech/Qt-4.5.2/bin:$PATH"
    fi

    Qt文件系统的配置
    准备
    1.在根文件系统里建立/opt/qt/bin lib plugins 三个文件夹
    2.把/usr/local/Trolltech/QtEmbedded-4.5.2-arm/lib(即Qt-embedde库的安装目录)中的 libQtCore.so.4.5.2 libQtGui.so.4.5.2 libQtNetwork.so.4.5.2 放到开发板根文件系统的/opt/qt/lib里,并且做三个软链接分别为libQtCore.so.4 libQtGui.so.4 libQtNetwork.so.4
    3.接着再把/usr/local/Trolltech/QtEmbedded-4.5.2-arm/lib/fonts/ 中带Vera和fixed的文件拷贝到根文件系统的/opt/qt/lib/fonts/
    4.再要把/usr/local/Trolltech/QtEmbedded-4.5.2-arm/plugins/imageformats 里的文件拷贝到根文件系统的/opt/qt/plugins/imageformats 里。
    5.到现在基本的Qt库就已经移植好了。在移植应用程序的时候,可以用如下命令查看需要那些共享库:
    arm-linux-readelf -a 程序名 | grep "Share",其中arm-linux-可该成你交叉编译工具的前缀

    配置根文件系统
    一般首先要做的就是将一个触摸屏校正程序放到文件系统的bin里(其实放那里都一样)。然后写一个脚本程序,让系统开机时调用,我的脚本程序initqt如下(别忘了给它添加可执行权限):
    #!/bin/sh
    export HOME=/root
    export QTDIR=/opt/qt
    #用来选择LinuxTP鼠标驱动
    export set QWS_MOUSE_PROTO="LinuxTP:/dev/h3600_tsraw"
    export QWS_DISPLAY="LinuxFB:/dev/fb0"
    #用来调整字体显示的比例,里面的数值可以自己换一下看看效果
    export QWS_DISPLAY="LinuxFB:mmWidth130:mmHeight100:0"
    export QWS_SIZE="320x240"
    export QT_PLUGIN_PATH=$QTDIR/plugins/
    #字体目录
    export QT_QWS_FONTDIR=$QTDIR/lib/fonts
    export PATH=$QTDIR/bin:$PATH
    export LD_LIBRARY_PATH=$QTDIR/lib:$QTDIR/plugins/imageformats:$LD_LIBRARY_PATH
    #判断是否已经校正过屏幕了
    if [ -s "etc/pointercal" ] ; then
    else
    /bin/mousecalibration
    fi

    再配置一下/etc/profile文件,让一下环境变量登录就有效,以下是我的配置:
    # Ash profile
    # vim: syntax=sh
    # No core files by default
    #ulimit -S -c 0 > /dev/null 2>&1
    USER="`id -un`"
    LOGNAME=$USER
    PS1='[u@h W]# '
    PATH=$PATH
    HOSTNAME=`/bin/hostname`
    export USER LOGNAME PS1 PATH
    export HOME=/root
    export QTDIR=/opt/qt
    export set QWS_MOUSE_PROTO="LinuxTP:/dev/h3600_tsraw"
    export QWS_DISPLAY="LinuxFB:/dev/fb0"
    export QWS_DISPLAY="LinuxFB:mmWidth130:mmHeight100:0"
    export QWS_SIZE="320x240"
    export QT_PLUGIN_PATH=$QTDIR/plugins/
    export QT_QWS_FONTDIR=$QTDIR/lib/fonts
    export PATH=$QTDIR/bin:$PATH
    export LD_LIBRARY_PATH=$QTDIR/lib:$QTDIR/plugins/imageformats:$LD_LIBRARY_PATH

    最后在根文件系统的/etc/init.d/rcS 中的适当位置,加上/bin/initqt &

  • 相关阅读:
    腾讯精品课程
    什么都没有,先空出来!
    Python3-super().__init()__
    Python3-模块
    Python3-单例模式
    Python3-私有化修改
    Python3-私有属性
    Python3-面向对象-魔术方法
    Python3-面向对象-四种方法
    Python3-迭代器
  • 原文地址:https://www.cnblogs.com/ganrui/p/3716347.html
Copyright © 2011-2022 走看看