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

;