Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1334735
  • 博文数量: 177
  • 博客积分: 3640
  • 博客等级: 中校
  • 技术积分: 1778
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-27 16:51
文章分类

全部博文(177)

文章存档

2014年(1)

2013年(10)

2012年(3)

2011年(163)

分类: LINUX

2011-05-14 20:28:04

以qt-embedded-linux-opensource-src-4.4.3.tar.gz为例
一、编译tslib
 下载最新的开发版本,见  
 ·解压到/home下
 ·生成 configure 文件,配置、编译、安装 
   #./autogen.sh
   #./configure --prefix=/home/mytslib/ --host=arm-linux ac_cv_func_malloc_0_nonnull=yes

/**************************

echo "ac_cv_func_malloc_0_nonnull=yes" > tslib/arm-linux.autogen #为了防止出现undefined reference to `rpl_malloc' 错误
***************************/
   #make
   #make install-strip //生成瘦身应用程序和库
二、编译qt源码
 1、将源码解压到/home下
 2、设置环境变量:
    指定qt源码的路径 export QTDIR=/home/qt-embedded-linux-opensource-src-4.4.3
    指定交叉编译工具 export PATH=/usr/local/arm/3.4.1/bin:$PATH
 3、配置、编译、安装
 #./configure -xplatform qws/linux-arm-g++ -embedded arm -shared -little-endian -

qt-kbd-usb -qt-mouse-tslib -qt-libpng -qt-libjpeg -qt-gif -depths 4,8,16,32 -confirm-license -

prefix /home/qt-embedded-opensource-4.4.3/ -I/home/mytslib/include -L/home/mytslib/lib
 #time gmake
 #time gmake install
 4、说明
 ·-qt-libjpeg -qt-gif  (会在/home/qt-embedded-opensource-4.4.3/plugins/imageformats/

下生成多个插件so库文件)
 ·-qt-mouse-tslib(添加触摸屏,注意要将它的头文件和库指定好即-I/home/mytslib/include -

L/home/mytslib/lib,如果不添加链接的头文件和库配置时会提示:The tslib functionality test failed!
You might need to add additional include and library search paths by passing the -I and -L

switches to ,in  -xplatform qws/linux-arm-g++)

三、向目标板上库文件和板子上的环境配置,注意目录的创建
 在板子上创建两个目录:qt4.4.3和tslib
 1、移植qt库:
 ·将/home/qt-embedded-opensource-4.4.3/lib下的动态库都拷贝到板子上qt4.4.3/lib,注意链接;
 ·将字体拷贝到板子上/home/qt-embedded-opensource-4.4.3/lib/fonts,注意:不需要将所有的字体

都拷贝到板子上qt4.4.3/lib/fonts,用一个就行;
 ·移植jpeg,gif的插件库,将/home/qt-embedded-opensource-4.4.3/plugins/imageformats中的文

件拷贝到板子上qt4.4.3/plugins/imageformats;
 2、移植tslib库及测试程序
 ·将/home/mytslib/lib/的动态库移植到板子上的tslib/lib,注意链接;
 ·将/home/mytslib/lib/ts的动态库移植到板子上的tslib/lib/ts
 ·将/home/mytslib/bin/的测试文件ts_calibrate移植到板子上的tslib/bin
 ·将/home/mytslib/etc/ts.conf移植到板子上的tslib/etc/
 3、设置目标板上的环境变量
 export QWS_DISPLAY='/dev/fb1'
 #export QWS_KEYBOARD='LIRC:/dev/lircd'
 export QWS_MOUSE_PROTO='TSLIB:/dev/input/event0'
 export QWS_SIZE='800x600'
 export TSLIB_CALIBFILE='/*/tslib/etc/pointercal'
 export TSLIB_CONFFILE='/*/tslib/etc/ts.conf'
 export TSLIB_CONSOLEDEVICE='none'
 export TSLIB_FBDEVICE='/dev/fb0'
 export TSLIB_PLUGINDIR='/*/tslib/lib/ts'
 export TSLIB_TSDEVICE='/dev/input/event0'

 export LD_LIBRARY_PATH=/*/qt4.4.3/plugins/imageformats/:/*/qt4.4.3/lib:$LD_LIBRARY_PATH
 export QT_PLUGIN_PATH=/*/qt4.4.3/plugins/
 export QT_QWS_FONTDIR=/*/qt4.4.3/lib/fonts
 
四、测试tslib

 $cd /*/tslib/bin
 $./ts_calibrate
 会在触摸屏上显示一个焦点,点击这一点,焦点会移动,继续点击,直到5个点都点完了为止,这就是

五点测试,点击完后,会在/*/tslib/etc/下产生pointercal文件,此文件记录了,刚点击的五点的位置坐标

 

 注意:目标板的kernel中一定要添加了tslib驱动,不然会提示:selected device uses a different

version of the event protocol than tslib was compiled for

 
五、编写带有jpeg图片的应用程序
    1、将图片编译到应用程序里;编译出来的可执行文件太大,cpu占用多。
 a、创建应用程序
  例如:main.cpp
  #include
  #include
  #include
  int main(int argc, char *argv[])
  {
     QApplication app(argc, argv);
     QLabel *label = new QLabel;
     label->setPixmap(QString::fromUtf8(":/images/test.jpg"));
     label->setGeometry(0,0,800,600);
     label->show();
     return app.exec();
  }
 b、创建资源文件*.qrc,应用程序同一目录下有一个images文件夹中有一张test.jpg图片
  
  
      images/test.jpg
  

  

 c、创建工程文件*.pro
    #qmake -project  //生成工程文件
    修改工程文件*.pro  ;添加 QTPLUGIN += qjpeg和RESOURCES += tmp.qrc
  QTPLUGIN += qjpeg
  TEMPLATE = app
  TARGET = 
  DEPENDPATH += .
  INCLUDEPATH += .

  # Input
  SOURCES += main.cpp
  RESOURCES += tmp.qrc
 d、编译
    #qmake
    #make
 e、将生成的可执行文件放到板子上运行,就会在触摸屏上显示

    2、图片在板子上,应用程序中指定图片的路径;编译出的可执行文件小,cpu占用率小;路径一定要指定对
 a、创建应用程序
  例如:main.cpp
  #include
  #include
  #include
  int main(int argc, char *argv[])
  {
     QApplication app(argc, argv);
     QLabel *label = new QLabel;
     label->setPixmap(QString::fromUtf8("images/test.jpg"));
     label->setGeometry(0,0,800,600);
     label->show();
     return app.exec();
  }
 b、创建工程文件
    #qmake -project  //生成工程文件
    修改工程文件*.pro  ;添加 QTPLUGIN += qjpeg
  QTPLUGIN += qjpeg
  TEMPLATE = app
  TARGET = 
  DEPENDPATH += .
  INCLUDEPATH += .

  # Input
  SOURCES += main.cpp
 c、编译
    #qmake
    #make
 d、运行
    将可执行文件拷到板子上;
    在可执行的文件的同一目录下创建images文件夹,并将test.jpeg放到该目录下;
    运行可执行文件,就会在触摸屏上显示 

阅读(2810) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~