qt移植_qt移植到开发板 - CSDN
精华内容
参与话题
  • ARm 移植最新版QT5.12

    千次阅读 2019-02-21 13:32:45
    转载:...一、 准备 ubuntu:12.04 源码:http://download.qt.io/archive/qt/5.12/5.12.0/single/ 工具链:https://releases.linaro.org/components/toolchain/binari...

    转载:https://blog.csdn.net/weixin_37771089/article/details/84989447
    一、 准备
    ubuntu:12.04
    源码:http://download.qt.io/archive/qt/5.12/5.12.0/single/
    工具链:https://releases.linaro.org/components/toolchain/binaries/4.9-2017.01/arm-linux-gnueabi/
    二、 安装的交叉编译工具链v4.9.4

    (1)解压下载的预编译好的工具链包,直接右击解压并将解压后的文件夹移动到/opt下
    在这里插入图片描述
    (2)在写入这个之前屏蔽PATH中旧版本的工具链路径

    (3)设置新工具链的环境变量写到.bashrc或/etc/profile中:
    sudo vim /.bashrc 或 sudo vim /etc/profile
    在文件最后添加:
    在这里插入图片描述
    保存退出。
    source ~/.bashrc 或 source /etc/profile
    输出PATH看看:
    在这里插入图片描述
    查看版本: arm-linux-gnueabi-g++ --version 看是否为4.9.4

    成功。
    三、 交叉编译QT5.12
    进入QT源码目录并解压,直接右击解压:

    进入源码目录编辑文件/qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf
    加入这些:
    在这里插入图片描述
    configure:
    ./configure -prefix /usr/local/Trolltech/Qt-5.12.0-arm/ -release -opensource -make libs -xplatform linux-arm-gnueabi-g++ -optimized-qmake -pch -qt-libjpeg -qt-zlib -no-opengl -skip qt3d -skip qtcanvas3d -skip qtpurchasing -no-sse2 -no-openssl -no-cups -no-glib -no-iconv -nomake examples -nomake tools -skip qtvirtualkeyboard

    错误:/qt-everywhere-src-5.12.0/qtbase/src/corelib/global/qendian.h +96重复定义
    (1)template T qbswap(T source); 去掉 constexpr即可

    make –j4(至少需要一个多小时)

    sudo make install

    展开全文
  • linux arm Qt 移植配置

    2020-07-27 23:31:29
    linux arm Qt 移植配置,转载高人的qt在嵌入式中的移植记录,值得一看
  • 移植Qt到开发板的过程

    千次阅读 2014-03-06 11:17:26
    做linux大半年了,接触QT也有一段时间了,从来没有成功的把QT移植到开发板上去,过完年闲得无聊,试了哈。今天能够成功的把QT的一个界面软件运行在开发板上了,写下此文,以防止如果有一天忘记了,能够通过查看此...
    做linux大半年了,接触QT也有一段时间了,从来没有成功的把QT移植到开发板上去,过完年闲得无聊,试了哈。今天能够成功的把QT的一个界面软件运行在开发板上了,写下此文,以防止如果有一天忘记了,能够通过查看此文档,复习哈。也方便各位学习指导。本人新手,如有不对的地方,还请见谅,和斧正。
           平台:虚拟机:VMware Workstation
                     PC机操作系统:ubuntu12.04
                     编译环境:GCC,G++,arm-linux-gcc 4.4.1
                                       
    qt-creator-linux-x86-opensource-2.7.0.bin
                                       
    Qt libraries 4.8.4 for embedded Linux 
                        tslib-1.4.tar.gz
    大概理一下思路,对于PC机端:需要先编译tslib,主要用于生成触摸屏相关的库文件,方便QT调用,在编译Qt libraries 4.8.4 for embedded Linux,用于生产库QT库文件,对于Qt libraries 4.8.4 for embedded Linux的编译,有两种方式,一种是编译在PC机下使用,一种是在arm下使用,编译Qt libraries 4.8.4 for embedded Linux后会生成一个QT下的编译环境qmake。在成功编译完Qt libraries 4.8.4 for embedded Linux后,生产的QT库和qmake备用,arm编译下的QT库通过NFS方式拷贝到开发板上备用。接下来详细说明每一个步骤:
     一、Tslib 移植

    获取 tslib-1.4.tar.gz
    1、安装必要的库和环境(PC机执行)
    #sudo apt-get install autoconf
    #sudo apt-get install libtool
    #sudo apt-get install automake
    2、解压
    tar xvzf tslib-1.4.tar.gz
    3、进入tslib目录
    #cd tslib
    4、设置环境变量和交差编译器路径
    #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
     (这是我的交差编译器的安装位置,请根据实际情况指定交差编译器位置)
    5、 执行脚本 
    #./autogen.sh
    #echo "ac_cv_func_malloc_0_nunnull=yes" > arm-linux.cache 
    6、
    配置
    #
    ./configure –host=arm-linux     /
     --cache-file=arm-linux.cache   /
     --enable-inputapi=no              /
     PLUGIN_DIR=/usr/local/arm/stlib/plugins /
      –prefix=/usr/local/arm/tslib/build  /
      --host=arm-linux                     /
      --cache-file=arm-linux.cache 2>&1 | tee conf_log
      以上的设置 ”/“为空格不用换行,使用的时候,不要复制使用,怕有不可识别字符导致配置错误
      在--prefix指定的路径
    /usr/local/arm/tslib/build 会生成编译好的tslib文件
    7、编译
    #make 2>&1 | tee make_log
    #make install 
      编译完成,可查看
    /usr/local/arm/tslib生成的tslib文件

     二、Qt4.8.4 移植
     1、复制
    qt-everywhere-opensource-src-4.8.4.tar.gz 库文件在ubuntu12.04下面的任何文件夹
     2、安装需要的库
        #
    Sudo apt-get install libxext-dev
     3、解压
    qt-everywhere-opensource-src-4.8.4.tar.gz
        #
    tar xzvf qt-everywhere-opensource-src-4.8.4.tar.gz
     4、进入
    qt-everywhere-opensource-src-4.8.4
        #cd 
    qt-everywhere-opensource-src-4.8.4 
     5 
    、编译  
     
      a、编译到PC端使用的库,虽然我们在使用过程中不一定会使用,但是,我们可以编译出来方便调试      
          1)、配置
           
      #.configure -prefix /usr/local/qt-x11/qtlib(指定编译完成的生成路径,路径请先建立)
          2)、编译
             #make    (这个过程很久,大概在2个半小时后左右,需要等待,可以去玩一会儿)
             #make install
          完成编译以后,成功编译的话可以在生成路径
    /usr/local/qt-x11/qtlib 看到编译好的库文件,在qtlib/bin下面能够看到我们要使用的qmake工具
       b、编译ARM版本下的库文件,如果进行了a步骤(编译到PC端使用的库)请执行清除配置命令
          #make confclean
          1)、修改文件 
    qmake.conf
                      #cd 
    qt-everywhere-opensource-src-4.8.4/mkspecs/qws/linux-arm-g++
                 #sudo 
    qmake.conf 
                 打开这个配置文件,主要是设置
     TSLIB_INCDIR  TSLIB_LIBDIR路径,路径设为你安装的tslib路径(编译tslib生成文件存放路径) ,下面是qmake.conf 文件内容,加入TSLIB_INCDIR  TSLIB_LIBDIR即可


      2)、在qt-everywhere-opensource-src-4.8.4目录下新建一个脚本文件Build_qt.sh
           #./configure -h 

           #sudo gedit Build_qt.sh
            在脚本文件下输入如下内容:

             #!/bin/bash
             ./configure\
             -prefix /usr/local/qt-arm/qtlib \
             -release\
             -opensource \
             -embedded arm \
             -shared\
             -no-fast \
             -no-largefile\
             -no-accessibility \
             -stl \
             -qt-sql-sqlite\
             -qt-libjpeg\
             -qt-libpng\
             -no-qt3support  \
             -xplatform qws/linux-arm-g++ \
             -little-endian -host-little-endian \
             -no-mmx -no-3dnow -no-sse -no-sse2 -no-sse3 -no-ssse3 -no-sse4.1 -no-sse4.2 \
             -no-avx -no-neon \
             -no-phonon -no-phonon-backend \
             -no-svg\
             -no-webkit\
             -no-javascript-jit\
             -no-script\
             -no-openssl\
             -no-nis\
             -no-cups\
             -nomake docs \
             -qt-mouse-pc     \
             -qt-mouse-tslib
           保存关闭,
    -prefix /usr/local/qt-arm/qtlib为生成的arm下执行的库文件的路径。
         3)、修改脚本文件
    Build_qt.sh权限
         #chmod 777 Build_qt.sh
         4)、执行脚本文件
         #./Build_qt.sh
         该过程会比较久,可以去喝口水,玩一会儿在回来
         5)、编译
         #make
         #make install
         完成编译后,会在
    -prefix /usr/local/qt-arm的路径下看到编译好的库文件qtlib
         在
    /usr/local/qt-arm/qtlib/bin下能够看到qmake文件。做完以上步骤,我们已经安装完了qt库文件和qmake。
     
         三、安装qt-creator-linux-x86-opensource-2.7.0.bin,这个是在ubuntu下面最QT GUI的编程软件。安装完了qt-creator-linux-x86-opensource-2.7.0.bin,打开软件进行配置。
               1 、打开QT


    点击工具栏的tools-->options
    然后选择Build&Run


    先选择Compilers 用于指定编译器,点击Add-GCC


    在Name里面输入:linux-arm-g++,点击Browes,指定arm-none-linux-gnueabi-g++的路径,这个是你安装的arm-linux交差编译器的/bin文件夹下面的一个文件:arm-none-linux-gnueabi-g++



    然后选择Qt Versions指定qmake路径,点击Add,Versions name:Qt 4.8.4(qtarm),点击Browse,指定qmake的路径,这个路径是你编译好qt-everywhere-opensource-src-4.8.4的生成的库文件的路径,在/bin下面有qmake。


    在点击Kits,照如下图设置。就完成了整个设置过程。


     用qt-creator新建一个项目,点击File-->NEW File or Project...新建QT项目 ,然后选择Applications,新建项目。
    编译好QT软件后, 点击右边的Projects可以查看生成文件的路径。把生成文件拷到开发板上。
    如下操作是在开发板上执行,
    1、从PC机拷贝文件,1、库文件,tslib 和qtlib/lib  qt生成的执行文件
    2、环境变量的设置
    export set QT_QWS_FONTDIR=/usr/local/qtlib/lib/fonts
    export set LD_LIBRARY_PATH=/usr/local/qtlib/lib:$LD_LIBRARY_PATH
    export set QWS_MOUSE_PROTO="TSLIB:/dev/input/event0 "
    export set LD_LIBRARY_PATH=/usr/local/tslib/lib:$LD_LIBRARY_PATH
    export set TSLIB_CONFFILE=/usr/local/tslib/etc/ts.conf
    export set TSLIB_PLUGINDIR=/usr/local/tslib/lib/ts
    export set TSLIB_CALIBFILE=/etc/pointercal
    export set TSLIB_FBDEVICE=/dev/fb0
    export set TSLIB_TSDEVIEC=/dev/input/event0
    设置这些环境变量,注意你的库存放的路劲。
    3、运行  qt执行文件
     #./test  -qws 
       见证奇迹的时刻到了。呵呵。 
    展开全文
  • 超详细Qt5.9.5移植攻略,拿走不谢

    万次阅读 热门讨论 2019-05-23 13:55:41
    当现有版本的Qt库不能满足实际开发需求时,则需要进行Qt移植。本文就来介绍下如何将Qt5.9.5移植到ARM开发板上。 以启扬imx6开发板为例,使用Ubuntu14.04虚拟机作为移植环境。 下面跟着我左手右手一个慢动作,...

    导语:

    目前启扬智能默认提供的Qt版本是4.8,但是现在已经发展到最新的5.9版本。当现有版本的Qt库不能满足实际开发需求时,则需要进行Qt移植。本文就来介绍下如何将Qt5.9.5移植到ARM开发板上。

     

    以启扬imx6开发板为例,使用Ubuntu14.04虚拟机作为移植环境。

    下面跟着我左手右手一个慢动作,开始吧!

     

    一、准备工作

    1、主机环境:Ubuntu14.04;

    开发板:启扬IAC-IMX6-kit;

    启扬IAC-IMX6-Kit开发板

    (如果使用的是Ubuntu12.04,需要将gcc升级到4.8以上)

    2、官网下载源码包

      

       下载qt-everywhere-opensource-src-5.9.5.tar.xz,这里选择下载的是xz格式的源码包,而不是将源码和qtcreator打包好的run文件。因为试过run文件,一方面文件太大,另一方面安装得到的源码包和xz格式的有一些不同,比如找不到qt base,影响到后续的配置,所以最好选择xz格式。

    3、解压

       tar -zxvf qt-everywhere-opensource-src-5.9.5.tar.xz

    4、配置交叉编译器的路径

       因为Qt5.9.5支持C++11,所以编译器版本需要高于4.8以上,我采用了4.8.3版本编译器。

       修改~/.bashrc 文件,在系统环境变量PATH中添加交叉编译器的路径。(路径以实际路径为准)

    export PATH=/home/ubuntu1404/work/arm-2014.05/bin:$PATH

     

    执行命令source ~/.bashrc

     

    查看交叉编译器的路径是否已经添加到系统环境变量PATH中。 
    可以查看交叉编译器的版本号:

    arm-none-linux-gnueabi-gcc-v

    如果能够正常显示出交叉编译器的版本号,恭喜你,第一步已经成功了!

     

    二、Qt5.9.5的交叉编译

    1. 指定目标平台的架构和交叉编译器的类型

       Qt5中针对不同的目标平台都有相应的配置文件夹,只需修改对应目标平台文件夹中的配置文件qmake.conf。

    cd qt-everywhere-opensource-src-5.9.5

     

    vi qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf

     

    下面是修改后的qmake.conf,其中的内容需要根据自己的实际情况去修改。

     

    这里修改了两个地方,一是定义了arm的架构,其中:QT_QPA_PLATFORM是指定QPA平台的插件,这里选择的是linuxfb,参数-O是编译器提供的优化选项,如-O、-O1、-O2、-O3等,代表不同的优化级别,参数-march后面指定的是目标处理器的架构(可能指定不同的架构会调用不同的指令集,猜的~);另外一个改动的地方就是将下面g++.conf和linux.conf中的参数值中加上了fsl,如arm-none-linux-gnueabi-gcc,这是我选择的交叉编译器,可以根据自身的情况修改。

     

    2、根据需求配置Qt

     

    配置Qt可以通过源码包中configure脚本来完成,运行configure脚本后会得到makefile文件,然后通过make和make install命令完成编译和安装。这里我编写了一个脚本来实现配置的步骤。

    从shell脚本中可以看到,参数-prefix指定了文件的安装路径,我的安装路径是/opt/newQt5.9.5_arm/newQt5.9.5_arm_install,参数-xplatform指定了目标平台为linux-arm-gnueabi-g++。执行这个脚本后就会得到makefile文件,下一步就可以进行编译了。

     

    3. 编译和安装

    终于可以编译了,执行make&&make install命令,然后开始漫长的编译过程,整个过程持续大概2个小时。

    移植所需的文件到ARM中

    将编译安装得到的lib、plugins拷贝到开发板中,lib中存放的是QT程序运行所需的动态库文件,plugins中存放的应该是所需的插件。由于U盘挂载比较麻烦,这里选择使用scp命令,通过网络传输。

    配置开发板环境并运行程序

    修改/etc/QtEnv文件,设置开发板的环境变量,文件末尾添加的内容如下:

    export LD_LIBRARY_PATH=/opt/Qt5.9.5_arm_install/lib

    export QT_QPA_PLATFORM_PLUGIN_PATH=/opt/Qt5.9.5_arm_install/plugins

    export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0

    export QT_QPA_FONTDIR=/opt/Qt5.9.5_arm_install/lib/fonts

     

    4. 编译输入法程序

    将QtSoftKeyboard2018-03-03.zip拷贝到目录下解压

    添加qmake到环境变量

    export QTEDIR=/opt/newQt5.9.5_arm/newQt5.9.5_arm_install:$QTEDIR

    export PATH=/opt/newQt5.9.5_arm/newQt5.9.5_arm_install/bin:$PATH

    export LD_LIBRARY_PATH=/opt/newQt5.9.5_arm/newQt5.9.5_arm_install/lib: LD_LIBRARY_PATH

    生成Makefile和编译

        #qmake

        #make

        报错

        修改PinYinFenCi.cpp文件的42行、88行、117行将toAscii()函数修改为toLatin1()

        将/bin/目录下的InputTool和/db/目录下的pinyin.db拷贝到开发板同一个目录下

        运行InputTool

     

    报错

     

    将/home/ubuntu1404/work/arm-2014.05/arm-none-linux-gnueabi/libc/lib/下的所有文件拷贝

     

    到开发板的/lib/目录下

     

    Qt界面不显示中文

     

    将FZYTK.TTF文件拷贝到/opt/Qt5.9.5_arm_install/lib/fonts下没有fonts需创建

     

    警告

    解决方法

    移植libiconv-1.14

    ./configure -prefix=$PWD/install -host=arm-none-linux-gnueabi

    Make &&make install

    将安装目录下lib目录下的preloadable_libiconv.so拷贝到开发板/system/lib目录下

    添加环境变量export LD_PRELOAD=/system/lib/preloadable_libiconv.so

     

    至此,Qt移植就已经大功告成了!

    你以为我们提供教程就这些?当然不是了,Qt Creator的安装配置运行过程继续了解下!

    一、安装Qt creator

    安装步骤

    注意点:截图中的红色方框内容表示必须点击或者填写

    将qt-creator-opensource-linux-x86_64-4.3.1.run拷贝到Ubuntu中,运行qt-creator-opensource-linux-x86_64-4.3.1.run。

    出现以下界面,点击Next:

    出现以下界面,点击skip:

    出现以下界面,点击Next:

    出现以下界面,选择安装路径,以下是我的安装路径,然后点击Next:

    出现以下界面,点击Next:

    出现以下界面,点击接受协议,然后点击Next:

    出现以下界面,点击install:

    出现以下界面,等待1分钟左右:

    出现以下界面,点击finish:

    出现以下界面,表示安装成功:

    备注:Qt Creator可运行文件在: <安装目录>/bin/qtcreator

    二、配置Qt Creator

     配置步骤

    点击Tools->Options:

    点击Build & Run 然后点击Compilers:

    点击Add->GCC->C:

    Compiler path 填写:

    /home/ubuntu1404/work/arm-2014.05/bin/arm-none-linux-gnueabi-gcc

    然后点击Apply:

     

    点击Add->GCC->C++:

    Compiler path 填写:

    /home/ubuntu1404/work/arm-2014.05/bin/arm-none-linux-gnueabi-g++

    然后点击Apply:

    点击Qt Versions ,然后点击Add:

    选择如下图路径的qmake,然后点击Apply:

     

     

    点击Debuggers,然后点击Add:

    Name填写:qt5.9.5-imx6

    Path 填写:

    /home/ubuntu1404/work/arm-2014.05/bin/arm-none-linux-gnueabi-gdb

    然后点击Apply

     

    点击Kits,然后点击Add:

    Name填写:qt5.9.5-imx6

    Sysroot填写:/home/ubuntu1404/work/arm-2014.05/bin

    Compiler C 选择GCC

    Compiler C++ 选择GCC

    Debuggers 选择qt5.9.5-imx6

    Qt version 选择Qt 5.9.5(qt5)

    最后点击OK。

     

    配置好后,关闭Qt creator。

    三、 运行Qt creator

    在终端运行:<安装目录>/bin/qtcreator.sh

    四、搭建Qt工程

    点击New Project

    点击Application,然后点击Qt Widgets Application,然后点击Choose:

    Name 填写: qt-test

    Create ir 填写:/home/ubuntu1404 (备注:我的路径)

    选择qt5.9.5-imx6,然后点击Next:

     

     

    出现以下界面,点击Next:

    出现以下界面,点击Finish:

    出现以下界面,点击Forms,然后双击mainwindow.ui:

    将左边的Push Buttor 拖拽到右边的窗口布局上:

    右击窗口布局的PushButton,选择Go to slot :

     

    出现以下界面,点击clicked(),然后点击OK :

     

    在下图的mainwindow.cpp中添加头文件:注意头文件换成英文双引号

     

    #include <QMessageBox>

    #include <qdebug.h>

     

    在void MainWindow::on_pushButton_clicked() 函数中添加:

    QMessage Boxmessage(QMessageBOX::Warning,"Information”,“Really to clear

    data?",QMessageBox::Yes|QMessageBox::No,NULL);

        if (message.exec()==QMessageBox::Yes)

        {

           qDebug()<<"clicked yes\n";

        }

        else

        {

           qDebug()<<"clicked no\n";

    }

    点击File,然后点击Save All:

     

    点击左下角的Run 绿色三角形按钮,等待十秒左右后,右下角出现绿色横条,表示IMX6 可执行的Qt程序成功生成。

     

    然后就可以尝试运行准备好的Qt程序了,Qt5中是不用加-qws参数的

    Tips:Qt5中不再用到Qt4中的窗口系统qws++,而是使用QPA系统,二者之间的差异还不清楚,但是程序运行时不需要再加上参数-qws了。而这个特性也导致Qt5与Qt4的移植过程有一些区别,这里记录一下。


    了解Qt5.9

          赫尔辛基,2017年6月5日——Qt公司发布了其跨平台软件开发框架Qt的最新版本Qt 5.9。该开发框架能够帮助企业为自己的产品带来高超的用户体验,满足用户的需求。Qt5.9 得益于C++ 11的强大,带来了前所未有的性能及稳定性,并且为您提供长期支持(LTS)。目前,全球数百万的开发者都在使用Qt技术,包括财富五百强企业前十名中的八位。

           根据Gartner最近发布的预测,2017年全球使用物联网的设备达到84亿件,比2016年增长31%,并且在2020年有望达到204亿件。物联网已经成为了全球技术发展方向中市场机会最广阔的领域。因此,企业及独立开发者们急切盼望能够通过方便快捷地创建应用及设备,满足当前及未来物联网行业的需求。在Qt 5.9的支持下,企业及独立开发者们能够获得这一跨平台开发框架的强力支持,为任何操作系统和设备开发提供功能强大且灵活的软件。

           Qt公司CTO Lars Knoll表示:“在今天这个万物互联、移动为先的社会里,客户的期望值呈指数级增长,几年前的企业完全无法预测今天的需求。因此,开发者们创造的应用及设备必须满足甚至超越客户的期望,以获得高超的用户体验。为满足这一需求,开发者们使用的开发框架也必须足够先进、灵活。Qt 5.9给开发者们提供了他们所需的性能及稳定性,帮助他们在今天高度竞争、应用驱动的经济环境中脱颖而出。”

      正如Qt的全部应用开发及设备开发工具一样,Qt 5.9所包含的新功能与高性能均以加速软件及设备开发为目的,涵盖大量行业,包括医疗健康、汽车制造、飞机制造、制造业、家电以及娱乐产品等。

    获取Qt移植相关资料,关注微信公众号“启扬智能ARM嵌入式开发”,回复关键字“qt”即可。

    展开全文
  • QT移植详解

    2012-12-09 15:42:53
    作者:程姚根,华清远见嵌入式学院讲师。 在数据结构的栈和队列的学习过程中,除了需要了解栈、队列的基本特点外,需要掌握包括创建、出栈...我们在pc机上编写Qt程序的时候可以很快就运行出来,但是如果要把它移植

    作者:程姚根,华清远见嵌入式学院讲师。

    在数据结构的栈和队列的学习过程中,除了需要了解栈、队列的基本特点外,需要掌握包括创建、出栈入栈、出队入队等基本操作。并熟悉一些常见的应用问题,比如球钟问题就是一个典型利用栈和队列实现的实际问题。本文描述球钟问题的具体实现过程。

    大家都知道,Qt程序时可以跨平台的,可以在任何平台运行。我们在pc机上编写Qt程序的时候可以很快就运行出来,但是如果要把它移植到另一个平台,我们该怎么做呢?下面开始我们的工作吧。

    平台:s3c2410
            交叉编译工具链:arm-none-linux-gnueabi-gcc(4.3.2)
            源码:tslib-1.4.tar.gz、qt-everywhere-opensource-src-4.7.0-beta2.zip

    一、移植tslib

    A、解压tslib源码包, 运行autogen.sh生成configure文件。如果出了如下错误:

            /autogen.sh: 4: autoreconf: not found

            因为没有安装一些工具, (ubuntu 10.04)用下面的命令安装好就可以了。
                    sudo apt-get install autoconf automake libtool autotools-dev

    B、 执行confugure生成Makefile文件

            $ echo "ac_cv_func_malloc_0_nonnull=yes" >$ARCH-linux.cache
                    $        ./configure        --host=arm-softfloat-linux-gnu        --prefix=/home/linux/tslib --cache-file=$ARCH-linux.cache

            说明:
                    --host是指你的交叉编译器的前最;例如:你的交叉编译器是arm-linux-gcc,则
                    --host=arm-linux.如果是arm-none-linux-gnueabi-gcc 则--host=arm-none-linux-gnueabi

            -prefix 是你执行make install 的时候编译后生成的可执行文件和库文件以及配置文所安装的目录,这个目录不能和tslib源码目录相同;

            configure文件下还有好多选项,你可以执行./configure --help 来进行选择其他项,不过在这里这些选项就够了。

    C、执行make、make install操作

    D、把指定安装目录下的tslib的文件都拷贝到你所挂载的根文件下
                    $ cp -a /home/linux/tslib /rootfs

    E、修改/rootfs/tslib下的etc目录中ts.cong文件
                    #vim ts.conf 将第二行的#module_raw input修改成module_raw input 注意一定要顶格写否则程序执行时会发生读取ts.conf错误

    F、启动开发板,设置一些环境变量

    在开发板的/etc/profile文件中添加如下代码
                    export TSLIB_ROOT=/tslib
                    export TSLIB_TSDEVICE=/dev/event0
                    export LD_LIBRARY_PATH=/tslib/lib:$LD_LIBRARY_PATH
                    export QWS_SIZE=320x240
                    export TSLIB_FBDEVICE=/dev/fb0
                    export TSLIB_PLUGINDIR=/tslib/lib/ts
                    export TSLIB_CONSOLEDEVICE=none
                    export TSLIB_CONFFILE=/tslib/etc/ts.conf
                    export POINTERCAL_FILE=/etc/pointercal
                    export QWS_MOUSE_PROTO=Tslib:/dev/event0
                    export TSLIB_CALIBFILE=/etc/pointercal
                    export QWS_DISPLAY="LinuxFb:mmWidth100:mmHeight130:0"
                    export TSLIB_TSEVENTTYYPE=H3600

    说明:
                    TSLIB_TSDEVICE        //触摸屏设备文件名。
                    TSLIB_CALIBFILE        //校准的数据文件,由ts_calibrate校准程序生成。
                    SLIB_CONFFILE        //配置文件名。
                    TSLIB_PLUGINDIR         //插件目录
                    TSLIB_CONSOLEDEVICE        //控制台设备文件名
                    TSLIB_FBDEVICE        //设备名

    以上环境变量在实际开发中的实际配置可以根据实际情况决定。而这些指定的设备节点一定要和你的开发板上的/dev目录下的设备节点相对应。

    G、 就可以运行/tslib/bin下的测试文件,如ts_calibrate校准程序。
            # /tslib/bin/ts_calibrate

    注意:

    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屏山的字体非常小。后来经过多发打听,才知道需要修改这句话。我们把其中的数字值都改为其一半的时候,屏山的字体就比较大了。具体原因有待研究。

    二、qt-everywhere的移植

    1、 解压源码并改名
                   $ tar xvf qt-everywhere-opensource-src-4.7.0-beta2.zip
                   $ mv qt-everywhere-opensource-src-4.7.0-beta2 qt-everywhere-source
                   $ mkdir qt-everywhere-target

    2、 配置
                   $ cd qt-everywhere-target
                   $ ../qt-everywhere-source/configure  -prefix  /qt-everywhere  -embedded  arm  -release  -opensource  -fast  -no-accessibility   -no-scripttools  -no-mmx  -no-multimedia  -no-svg  -no-webkit  -no-3dnow  -no-sse  -no-sse2  -silent  -qt-libpng  -qt-libjpeg -no-libtiff -no-multimedia -make libs -nomake tools -nomake examples -nomake docs -nomake demo -no-nis -no-cups -no-iconv -no-dbus -no-openssl -xplatform qws/linux-arm-gnueabi-g++ -little-endian -qt-freetype -depths 16,18 -qt-gfx-linuxfb -no-gfx-transformed -no-gfx-multiscreen -no-gfx-vnc -no-gfx-qvfb -qt-kbd-linuxinput -no-glib -qt-mouse-tslib -I/home/linux/tslib/include -L/home/linux/tslib/lib

    3、 编译
                    $ make

    4、 安装
                    $ make install

    5、 添加环境变量
                    修改/etc/bash.bashrc添加如下内容
                    export PATH=$PATH:/qt-everywhere/bin

    6、 修改文件系统
                    $ cp / qt-everywhere /source/rootfs -a

    7、 修改/source/rootfs/etc/profile添加如下内容
                    export LD_LIBRARY_PATH=/qt-everywhere/lib:$LD_LIBRARY_PATH
                    export QWS_SW_CURSOR
                    export QT_QWS_FONTDIR=/qt-everywhere/lib/fonts
                    export set HOME=/root
                    export set QPEDIR=/ qt-everywhere

    8、 修改/ qt-everywhere/bin/qmake
                    $ cd / qt-everywhere/bin
                    $ mv qmake qmke-target

    三、qt应用程序的移植

    1、 写一个简单的应用程序
            //main.cpp
            #include <QApplication>
            #include <QPushButton>

    int main(int argc, char **argv)
            {
                    QApplication app(argc, argv);

            QPushButton pushButton(QPushButton::tr("hello world"));
                    pushButton.show();

            return app.exec();
            }

    2、 主机上编译应用程序
                    $ qmake-target –project
                    $ qmake-target
                    修改Makefile
                    修改:
                     LIBS = $(SUBLIBS) -L/qt-everywhere/lib -lQtGui -L/home/linux/tslib/lib -L/qt-everywhere/lib -lQtNetwork -lQtCore –lpthread
                    为:
                     LIBS = $(SUBLIBS) -L/qt-everywhere/lib -lQtGui -lts -L/home/linux/tslib/lib -L/qt-everywhere/lib -lQtNetwork -lQtCore –lpthread
                    $ make
                    $ cp test /source/rootfs

    3、 目标板上运行
                    $ ./test -qws
                    这时发现在LCD屏上出现一个button,这说明我们的Qt库已经移植成功
            4、 国际化

            国际化是在qt编程中比较重要一部分,这里我们尝试去国际化我们的应用程序
                    ●    修改main.cpp为

            #include <QApplication>
                    #include <QPushButton>
                    #include <QTranslator>

            int main(int argc, char **argv)
                    {
                            QApplication app(argc, argv);

                    app.setFont(QFont("simsun",10));

                    QTranslator translator;
                            translator.load("zh_CN",".");
                            app.installTranslator(&translator);

                    QPushButton pushButton(QPushButton::tr("hello world"));
                            pushButton.show();

                    return app.exec();
                    }

            ●    修改pro文件添加如下内容:

            TRANSLATIONS += zh_CN.ts

            ●    到处ts文件

            $ lupdate test.pro

            ●    查看ts文件

            zh_CN.ts
                    <?xml version="1.0" encoding="utf-8"?>
                    <!DOCTYPE TS>
                    <TS version="2.0">
                    <context>
                            <name>QPushButton</name>
                            <message>
                                    <location filename="main.cpp" line="15"/>
                                    <source>hello world</source>
                                    <translation type="unfinished"></translation>
                            </message>
                    </context>
                    </TS>
                    ●    修改ts文件为
                    <?xml version="1.0" encoding="utf-8"?>
                    <!DOCTYPE TS>
                    <TS version="2.0">
                    <context>
                            <name>QPushButton</name>
                            <message>
                                    <location filename="main.cpp" line="15"/>
                                    <source>hello world</source>
                                    <translation>你好</translation>
                            </message>
                    </context>
                    </TS>
                    ●    导出qm文件
                    $ lrelease zh_CN.ts –qm zh_CN.qm
                    ●    为文件系统中添加字库
                    $ cp simsun.ttc /source/rootfs/qt-everywhere/lib/fonts/
                    simsun.ttc是宋体字库,我们可以在Windows的C:\WINDOWS\Fonts目录下找到
                    ●    运行程序
                    将hello 和 zh_CN.qm拷贝到/source/rootfs下
                    # ./hello –qws
                    会发现“hello world” 变成“你好”了!

    注意:

    -xplatform qws/linux-arm-gnueabi-g++ 平台,交叉编译工具链可以在这个地方改(qws)。

    对于翻译工作者,主要是利用Qt提供的工具lupdate、linguist和lrelease(它们都可以在Qt安装目录的bin文件夹下找到)来协助翻译工作并生成最后需要的.qm文件,包括以下内容:

    1.利用lupdate工具从源代码中扫描并提取需要翻译的字符串,生成.ts文件。类似编译时用到的qmake,运行lupdate时我们也需要指定一 个.pro的文件,这个.pro文件可以单独创建,也可以利用编译时用到的.pro文件,只需要定义好变量TRANSLATIONS就可以了,具体用法可 以参见后面的小例子。

    2.利用linguist工具来协助完成翻译工作,即打开前面用lupdate生成的.ts文件,对其中的字符串逐条进行翻译并保存。由于.ts文件采用了xml格式,我们也可以用其它编辑器来打开.ts文件并翻译。

    3.利用lrelease工具处理翻译好的.ts文件,生成格式更为紧凑的.qm文件。这便是翻译工作者最终需要提供给程序员的资源文件,它所占的空间比.ts文件小,但基本不具有可读性,只有QTranslator能正确的识别它。

    展开全文
  • QT移植

    千次阅读 2015-10-15 09:28:19
    导版权声明 ...前面我们测试了天嵌自带的Qt平台,从这一篇开始,我们将正式着手Qt的移植工作,就是首先编译出ARM版本的Qt库,然后用这个Qt库来编译可以在开发板上运行...而进行Qt移植的第一步就是进行Qt库的交叉
  •  目前网上的大多数 QT 移植教程还都停留在 qt4.8 版本,或者还有更老的 Qtopia ,但是目前 Qt 已经发展到最新的 5.7 版本了,我个人也已经使用了很长一段时间的 qt5.6 for windows ,本文就来介绍一下QT在嵌入式环境...
  • Qt移植

    2015-11-04 15:17:23
    终于成功移植QT4.5.3至mini2440,并能运行QT自带的应用程序,总得来说还算很顺利,下面是我移植的全部过程。 首先,我交待一下我的开发环境:  宿主机:Fedora9  主机Gcc:gcc 版本 4.3.0 20080428 (Red ...
  • 移植Qt5.6

    2019-05-22 18:40:27
    文章转自:https://blog.csdn.net/qq_36576792/article/details/87600010#1. 将网卡驱动、lcd显示设备驱动与触摸屏设备驱动编译进linux-4.12内核 交叉编译工具:arm-linux-gcc-4.4.3...
  • QT4项目移植QT5项目的方法

    万次阅读 2013-02-03 01:00:55
    QT4项目在QT5中打开,常常会报告一些莫名奇妙的错误。QLabel,QApplication,QPushButton等常用的头文件都报告找不到。 到qt的安装目录中一看,却是存在的。这是怎么回事呢? 原来,QT5中很多常用的QT头文件都被移到...
  • Windows下生成的QT项目移植到Linux下

    千次阅读 2019-02-10 22:01:55
    Windows下生成的QT项目移植到Linux下 最近在学习QT,记录一下Windows移植到Linux的过程以及遇到的问题 1.首先保证两系统中QT版本一致: 查看Linux中Qt版本:qmake -v 若不一致,则到官网安装下载安装对应版本:...
  • 如何将QT程序移植到开发板上运行

    万次阅读 2016-03-16 10:27:21
    1. 首先,要将QT环境设置成在ARM下运行的环境,这样编译出来的可执行文件才能在开发板...3.往开发板上移植基本的QT库。 1)在虚拟机里安装arm版QT所在的目录下寻找库及他们的相关链接文件。在arm/lib的目录下。文件都
  • 将vs+Qt的工程从windows平台移植到linux下

    万次阅读 多人点赞 2018-08-01 22:11:35
    windows下Qt的开发人员常用vs+Qt插件进行Qt桌面程序的开发。因为Qt是跨平台的,所以开发完成后如果需要把程序移植到linux下运行,只要把vs的项目工程放到linux下,编译即可。下面介绍把vs+Qt的工程从windows平台移植...
  • 现在有已经用编译器为gcc的Qt creator 编译好的界面,老师想用这个界面,还想用IT++库,将IT++库整合到VS2010上已经可以按照教程实现,但是没有将IT++库加到Qt上的资料,不知道怎么弄,所以现在想把Qt编的界面移植到...
  • 我想把在Windows环境下用QT开发的程序移植到ARM板上,有没有大牛玩过这个,程序里面还用到了boost,google protobuf,不知道有没有影响
  • 移植qt5.3.1到arm

    万次阅读 热门讨论 2014-08-04 20:24:49
    qt5出来也有好长的时间了,其中提供了很多的特性,所以这次移植的是qt5的最新版本5.3.1。 第一步准备好源码包,这里需要qt的源码包,和tslib包,tslib我使用的是开发板提供的包。 设置交叉编译
  • qt工程,windows到mac的移植

    千次阅读 2012-04-01 13:04:57
    最近在搞mac,把以前windows的工程移植到mac上,之前windows使用的QT开发,网上搜索了一下qt是支持mac的,于是就动手搞起来。 1.mac上qt环境搭建 先去qt官网下载一下mac版的qt库,然后安装,可以参考 Qt开发环境...
  • 开发环境 Win10 + QT5.6 和 树莓派 1.在Win10中用QT新建一个 Qt Widgets Application 项目    2 .找到工程目录 3 .将整个目录上传到树莓派中,用VNC连接上树莓派,进入LX终端,即命令行编辑界面 4进入上传的...
  • 编译OpenWrt平台上Qt程序的环境配置

    千次阅读 2015-05-05 18:22:41
    很久没有整Qt了,现在基本的功能实现了,需要移植到目标平台,配置环境如下:从linux移植qt移植到openwrt上。 配置QMAKESPEC (这个指定来qmake.conf目标文件位置,toolchain提供相对目录mips-linux-g++, qmake....
  • QT移植MQTT

    千次阅读 热门讨论 2018-05-18 09:42:05
    移植MQTT到QT环境中 一、项目下载链接
1 2 3 4 5 ... 20
收藏数 21,366
精华内容 8,546
关键字:

qt移植