找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4589|回复: 0
收起左侧

移植qt-4.8.5至 mini2440建立交叉编译及qt运行环境

[复制链接]
ID:3721 发表于 2015-1-5 15:26 | 显示全部楼层 |阅读模式
移植参考了网上流传的许多相关文档,感谢。

软硬件环境: ubuntu10.04 32bit          arm-linux-gcc-4.4.3          mini2440


1  下载tslib-1.4.tar.gz 触摸屏库文件包
     解压: tar -xvzf tslib-1.4.tar.gz
     进入解压后得到的tslib文件夹: cd tslib
     配置: ./configure --prefix=/opt/tslib/  --host=arm-linux  ac_cv_func_malloc_0_nonull=yes
     arm-linux-gcc编译tslib安装在/opt/tslib下: make&&make install


2. 下载Qt libraries 4.8.5 for embedded Linux (230 MB) (Info)
   解压: tar xvzf qt-everywhere-opensource-src-4.8.5.tar.gz 我将解压后的文件夹重命名为:qt-4.8.5-arm
   cd qt-4.8.5-arm
   ./configure
      可以看到许多配置qt功能及特征的选项,参考别人的配置,配置如下:
./configure -prefix /usr/local/Trolltech/Qt-4.8.5-arm -release -shared -fast -opensource -no-3dnow -no-openssl -no-libmng -no-opengl -no-qvfb -no-glib -no-phonon  -nomake examples -nomake tools -nomake docs -nomake demos -qt-sql-sqlite -qt-libjpeg -qt-zlib -qt-libpng -qt-mouse-tslib -xplatform qws/linux-arm-g++ -embedded arm -little-endian -depths 16 -confirm-license -I/opt/tslib/include -L/opt/tslib/lib
其中-no-xxx表示配置qt不支持xxx, 而-qt-xxx表示qt支持xxx, 这里制定了qt的安装路径/usr/local/Trolltech/Qt-4.8.5-arm, qt目标架构arm,编译平台linux-arm-g++,那个qws我不清楚其意义,记得要配置qt支持触屏:-qt-mouse-tslib,指定tslib的头文件路径:I/opt/tslib/include 和链接库路径-L/opt/tslib/lib即第1步安装的tslib
   make
    这里编译花了不少时间,且最开始未能成功,因那次我下载编译的是Qt libraries 4.8.5 for Linux/X11 (230 MB) (Info),而不是qt嵌入式linux库,我有意试一下,发现前一种不行。
  make install
    将qt库安装到/usr/local/Trolltech/Qt-4.8.5


3.把以上arm-linux-gcc编译的库拷贝到开发板系统的根文件系统下,pc上开发板的根文件系统路径是/nfsroot
  mkdir /nfsroot/opt/tslib
  cp /opt/tslib/*  /nfsroot/opt/tslib/

  mkdir /nfsroot/usr/local/Trolltech/ -p
  tar czvf Qt-4.8.5.tar.gz  Qt-4.8.5-arm
  在/usr/local/Trolltech下,我把pc下安装的qt库打包到/nfsroot/usr/local/Trolltech,即mini2440的根文件系统中,解压
  tar xvzf Qt-4.8.5.tar.gz
  得Qt-4.8.5-arm

4.在/nfsroot/etc/下建立 profile 制定qt和tslib运行的环境
  vim profile
  内容如下 :
  #!bin/sh
  export TSLIB_ROOT=/opt/tslib
  exprot TSLIB_TSDEVICE=/dev/event0
  export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
  export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
  export TSLIB_CALIBFILE=/etc/pointeral
  export TSLIB_FBDEVICE=/dev/fb0
  export QWS_MOUSE_PROTO=tslib:/dev/event0
  export QWS_SIZE=320*240
  export QTDIR=/usr/local/Trolltech/Qt-4.8.5-arm
  export QT_QWS_FONTDIR=$QTDIR/lib/fonts
  export LD_LIBRARY_PATH=$TSLIB_ROOT/lib:$QTDIR/lib:/usr/local/lib:$LD_LIBRARY_PATH
    以上的配置需根据自己的情况来,根文件系统中tslib,qt的安装目录,触摸屏,LCD在 /dev下的表示,窗口size,


  修改tslib的配置文件ts.conf
  vim ts.conf
  module_raw input
   将上面这条配置前的#去掉使之生效,让tslib可以用linux中input上报事件的接口
  module pthres pmin=1
     pthres为tslib提供触摸屏灵敏度门槛插件
   module variance delta=30
     variance为tslib提供触摸屏滤波算法插件
   module dejitter delta=100
     dejitter为tslib提供去噪算法插件 module linear// linear为tslib提供坐标变换插件

5.打开SecureCRT,启动mini2440,挂载根文件系统后,在mini2440系统终端测试
  cd /opt/tslib/bin
     进入tslib在根文件系统中的安装目录下的bin文件夹
  ./ts_calibrate
     首先运行ts_calibrate校准屏幕
  ./ts_test
     运行测试

  在运行tslib/bin下的程序时出错,看报错:error while loading shared libraries: libdl.so.2: cannot open shared object file: No such file
    是在指定的库路径下找不到libdl.so.2库, 在网上发现一个方法,到交叉编译工具链的库文件夹去找找
     cd  /usr/local/arm/4.4.3
     find ./ -name libdl.s0.2
     ./arm-none-linux-gnueabi/sys-root/lib/libdl.so.2
     cd arm-none-linux-gnueabi/sys-root/lib/
     cp libdl.so.2  /nfsroot/usr/local/Trolltech/Qt-4.8.5-arm/lib/
     把该库文件拷到根文件系统qt的库文件夹下吧

6.pc交叉编译几个qt程序例子,拷入根文件系统,在板子上运行
  cd /usr/local/Trolltech
    进入qt在pc上的安装目录
  vim setenv-embedded.sh
  #!bash shell
  PATH=/usr/local/Trolltech/Qt-4.8.5-arm/bin:$PATH
  QTDIR=/usr/local/Trolltech/Qt-4.8.5-arm
  MAINPATH=$QTDIR/man:$MAINPATH
  LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
    pc上安装了qt库,通过上面的脚本为qt应用程序在pc上的编译配置环境,如告知链接qt库的路径

cd /opt/qt-4.8.5-arm
   进入pc上qt包解压后得到的qt源码包文件夹
cd examples/mainwindows/application
   进入qt源码包提供的主窗口例子下的application目录
qmake
   生成Makefile
make
   编译得到application
cp application /nfsroot/usr/test
   将application拷贝至根文件系统/nfsroot/usr/test/下
启动mini2440,在其终端进入/usr/test目录,运行application
./application -qws
  若运行出错说缺少xxx库文件,到交叉编译工具链下的arm-none-linux-gnueabi/sys-root/lib/目录下找到该库文件,将其拷贝至根文件系统         中/usr/local/lib/目录下。之前在根文件系统/etc/profile中配置mini2440下qt程序运行环境时指定了库文件的目录,包括/usr/local/lib。

7.实现在启动mini2440进入系统后屏幕校准
  cp /nfsroot/opt/tslib/bin/ts_calibrate /nfsroot/usr/bin/
    将校准程序ts_calibrate拷贝至标准执行库
  chmod 777 /nfsroot/usr/bin/ts_calibrate
  vim nfsroot/etc/profile
    系统启动会执行/etc/profile中指定行为,在最后一行添加ts_calibrate

如有误,望指正。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表