移植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即可

移植Qt到开发板的过程_第1张图片

  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

移植Qt到开发板的过程_第2张图片

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

移植Qt到开发板的过程_第3张图片

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

移植Qt到开发板的过程_第4张图片

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

移植Qt到开发板的过程_第5张图片

移植Qt到开发板的过程_第6张图片

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

移植Qt到开发板的过程_第7张图片

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

移植Qt到开发板的过程_第8张图片

 用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 
   见证奇迹的时刻到了。呵呵。 

你可能感兴趣的:(移植Qt到开发板的过程)