Chinaunix首页 | 论坛 | 博客
  • 博客访问: 44529
  • 博文数量: 9
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 110
  • 用 户 组: 普通用户
  • 注册时间: 2013-02-28 09:47
文章分类

全部博文(9)

文章存档

2015年(9)

我的朋友

分类: LINUX

2015-09-25 13:15:19

移植的步骤如下:
1、下载新版qt;
2、编译tslib;
3、编译qt;
4、配置编译后的qt,以便在主机上用qmake编译适用目标板的qt应用;
5、拷贝lib文件到目标板。

一、下载qt和tslib

比如要安装4.8.5版本,则下载 qt-everywhere-opensource-src-4.8.5.tar.gz,
官网下载地址:
还要下载tslib,
官方下载地址:


二、编译tslib
1、建立工作目录

sudo mkdir /usr/local/tslib
sudo mkdir /usr/local/qt4.8.5-arm
$ mkdir qt-arm
$ cd qt-arm

2、编译安装tslib
将下载的tslib源码复制到工作目录,并解压:

$ cp tslib-1.4.tar.gz ./
$ tar xzvf  tslib1.4.tar.gz
$ cd tslib

3、配置环境
先安装automake、libtool 两个工具:

$ sudo apt-get install automake libtool

如果还没有交叉编译器的路径添加到PATH,要先把该路径添加到PATH中,本例使用的交叉编译器的路径为/opt/gcc-linaro-arm- inux-gnueabihf-4.7-2013.04-20130415_linux/bin(一定要指定自己目标板的交叉编译器路径),则执行以下命令:

$ export PATH=$PATH:/opt/gcc-linaro-arm-linux-gnueabihf-4.7-2013.04-2010415_linux/bin

4、编译
配置tslib,安装路径可以通过 --prefix 参数设置,这里安装到/usr/local/tslib:

$ ./autogen.sh
$ ./configure CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ --prefix=/usr/local/tslib --host=arm-linux-gnueabihf ac_cv_func_malloc_0_nonnull=yes

编译安装:

$ make
$ sudo make install
完成后,tslib会按安装到/usr/local/tslib目录下。
进入下一步之前,先将/usr/local/tslib/etc/ts.conf文件第二行“#module_raw input”注释去掉,变为“module_raw input”,注意一定要顶格。
5、开发板测试

将交叉编译的tslib安装到开发板上其实就是拷贝相关的文件并添加系统环境变量而已,所以相对操作较为简单,主要的就是需要找对目录就行。按照上面的操作方法,交叉编译安装后的文件在/usr/local/tslib目录下,因此需要拷贝的文件如下:

1、/usr/local/tslib/lib文件下除去pkgconfig目录外其他所有文件拷贝到开发板/lib目录下

2、/usr/local/tslib/etc下的ts.conf拷贝到开发板的/etc下,在复制对应目录之前修改文件如下,也可以复制完成后修改。

最后添加环境变量,通过超级终端在开发板系统中添加环境变量,可以在开发板文件系统的/etc/profile文件里添加,也可以直接添加。

export TSLIB_TSDEVICE=/dev/input/event0 
export TSLIB_CONFFILE=/etc/ts.conf
export TSLIB_PLUGINDIR=/lib/ts

export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0

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

最后运行测验程序

ts_calibrate 进行校验 
ts_test      进行测试

三、编译安装qt
1、解压

$ cd ~/qt-arm
$ cp qt-everywhere-opensource-src-4.8.5.tar.gz./
$ tar xzvf qt-everywhere-opensource-src-4.8.5.tar.gz
$ cd qt-everywhere-opensource-src-4.8.5

2、指定交叉编译器
打开解压目录下的mkspecs/qws/linux-arm-g++/qmake.conf:

$ vi mkspecs/qws/linux-arm-g++/qmake.conf

用vi打开qmake.conf 后,将arm-linux-全部替换arm-linux-gnueabihf-(注意:根据自己板子而定,并且一定要先将交叉编译器的路径加入PATH变量中),并加上-lts,然后保存退出,更改后如下:

# modifications to g++.conf
QMAKE_CC                = arm-linux-gnueabihf-gcc -lts
QMAKE_CXX               = arm-linux-gnueabihf-g++ -lts
QMAKE_LINK              = arm-linux-gnueabihf-g++ -lts
QMAKE_LINK_SHLIB        = arm-linux-gnueabihf-g++ -lts
# modifications to linux.conf
QMAKE_AR                = arm-linux-gnueabihf-ar cqs
QMAKE_OBJCOPY           = arm-linux-gnueabihf-objcopy
QMAKE_STRIP             = arm-linux-gnueabihf-strip

3、配置Qt
如下,先通过 --prefix 指定qt安装的路径,-I后面指定上一步tslib的include路径,-L后面指定上一步tslib的lib路径,

$ sudo mkdir /usr/local/qt4.8.5-arm
$ sudo ./configure --prefix=/usr/local/qt4.8.5-arm -opensource -release -shared -Declarative -importdir /opt/imports -fast -no-largefile -qt-sql-sqlite -qt3support -exceptions -xmlpatterns -no-glib -no-phonon -no-mmx -no-3dnow -no-sse -no-sse2 -svg -no-webkit -qt-zlib -qt-libtiff -qt-libpng -qt-libjpeg -make libs -make tools -nomake examples -nomake docs -nomake demo -no-nis -no-cups -iconv -no-dbus -xplatform qws/linux-arm-g++ -embedded arm -little-endian -qt-freetype -depths 16,24,32 -qt-gfx-linuxfb -qt-gfx-transformed -qt-gfx-multiscreen -no-gfx-vnc -no-gfx-qvfb -qt-kbd-linuxinput -no-kbd-qvfb -armfpa -no-mouse-qvfb -qt-mouse-linuxtp -qt-mouse-tslib -DQT_QLOCALE_USES_FCVT -DQT_NO_QWS_CURSOR -no-pch -I/usr/local/tslib/include -L/usr/local/tslib/lib -confirm-license

可以执行./configure --help查看参数的详细说明,根据需要来配置合适的参数
如果配置的时候提示:
    The tslib functionality test failed!
    You might need to modify the include and library search paths by editing
    QMAKE_INCDIR and QMAKE_LIBDIR in
    /home/gary/qt/qt-everywhere-opensource-src-4.8.5/mkspecs/qws/linux-arm-g++.


说明找不到合适的交叉编译工具,请重新设置PATH环境变量。如果还是不能解决,再修改mkspecs/qws/linux-arm-g++/qmake.conf,将交叉编译工具改为绝对路径。    

4、编译安装  

$ sudo make
$ sudo make install
完成后,qt4.8.5即会安装到主机/usr/local/qt4.8.5-arm目录下。

四、配置编译后的qt,以便在主机上用qmake编译嵌入式qt应用
1、设置环境变量
在主机(如Ubuntu)当前终端下执行以下命令:
$ export PATH=$PATH:/usr/local/qt4.8.5-arm/bin
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/qt4.8.5-arm/lib    

或将以上命令添加到/etc/profile 文件中,这样系统登录时就自动设置好这些环境变量。

五、移植Qt到开发板
开发板上要使用的东西就2个,一个是编译后的tslib,一个是编译后qt目录下的lib目录。如下步骤将这两个目录拷贝到开发板上。
1、打包lib
我们Qt 安装完成之后,为解决符号链接的问题,可以利用先打包,然后直接解压到开发板的做法:    

$ cd /usr/local/qt4.8.5-arm
$ tar -zcf lib.tar.gz lib
$ cd /usr/local
$tar -zcf tslib.tar.gz tslib
将打包好的压缩文件 lib.tar.gz 和 tslib.tar.gz 复制到开发板,然后解压:
mkdir -p /usr/local/qt4.8.5-arm
tar xzvf lib.tar.gz -C /usr/local/qt4.8.5-arm
tar xzvf tslib.tar.gz -C /usr/loacal    

2、设置开发板上的环境变量
在目标板上新建一个名为setqtenv的文件,

vi setqtenv
并加入以下内容:

export LD_LIBRARY_PATH=/lib:$LD_LIBRARY_PATH
export QTDIR=/usr/local/qt4.8.5-arm
export T_ROOT=/usr/local/tslib
export PATH=$T_ROOT/bin:$PATH
export LD_LIBRARY_PATH=$T_ROOT/lib:$QTDIR/lib:$LD_LIBRARY_PATH
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_PLUGINDIR=$T_ROOT/lib/ts
export TSLIB_CONFFILE=$T_ROOT/etc/ts.conf
export TSLIB_CALIBFILE=/etc/pointercal
export QWS_KEYBOARD=USB:/dev/input/event1
export QWS_MOUSE_PROTO=Tslib:/dev/input/event0
export QT_QWS_FONTDIR=$QTDIR/lib/fonts

执行以下命令设置好qt环境变量的设置:

source setqtenv
OK了,新版本的qt就可以使用了!

阅读(1746) | 评论(0) | 转发(0) |
0

上一篇:LTIB安装问题

下一篇:没有了

给主人留下些什么吧!~~