QT2.2.0环境的搭建

先是按网上教程,先把x86-qtopia  与arm-qtopia下载下来,解压后执行里面的脚本(开发板里的资源)

 

弄好后,开始移植到开发板

 

移植过程注意问题:

1、编译时报错XXX EABI version is 0,XXX EABI is 5

    这就说明现在的交叉编译器不支持EABI换个arm-linux-gcc 4.3.3

 

2、出现执行qtopia后无反应或者执行某些QT应用程序出现segment fault

  

   是内核,根文件系统,QT用的交叉编译器不匹配,可以都用4.3.3,但注意要在内核配置里选上EABI,好像在kernel feature里

 

3、打开任意一个QT应用程序,例如qpe  提示not found

    这是因为busybox编译成静态,而QT是需要动态编译的,

在busybox里选上use share lib...这个选项

 

4、动态编译后出现Failed to execute /linuxrc

   这主要是没将必要的库文件加入,可以将交叉编译器的库文件加到文件系统的lib目录下

如cps /usr/local/arm/4.3.3/arm-none-linux-gnueabi/libc/lib/*   ./lib
cp /usr/local/arm/4.3.3/arm-none-linux-gnueabi/libc/armv4t/lib/*   ./lib

 

5、如果无法显示[root@xxx]#

要在busybox 里选上

Busybox Settings --->
                Busybox Library Tuning --->
                        [*] Username completion
                        [*] Fancy shell prompts
如果不选择上面两项,文件系统是不是别PS1这个环境变量的参数的。

下面是转的:

http://blog.csdn.net/wwwxxlby520/archive/2009/07/24/4375834.aspx

添加触摸屏

(1)   编译tslib:
      /qt_arm/tslib
      ./autogen.sh
      echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache   //为了防止出现undefined reference to `rpl_malloc' 错误
      ./configure --host=arm-linux --cache-file=arm-linux.cache –enable-inputapi=no
      在make之前,为了支持触摸屏,这里有一点小小的修改,打开src/ts_read_raw.c文件,查看你的触摸屏驱动程序数据结构,看与ts_read_raw.c结构中的哪个一样,就将代码中的
   char *defaulttseventtype="UCB1x00";
   修改为
   char *defaulttseventtype="H3600";     //这里因为我的驱动是h3600_ts_event结构,修改为你驱动对应的结构,好了,如果你触摸屏驱动程序支持ioctrl操作,上面的 configure操作中的[—enable-inputapi=no]你可以删除。好了,现在可以make了,^_^


      make
      cp qt_arm/tslib/src/.libs/libts-0.0.so.0*   qt_arm/qte/lib/
      cp qt_arm/tslib/src/.libs/libts.so          qt_arm/qte/lib/
      cp qt_arm/tslib/src/*.h                     qt_arm/qte/include/

(2) 修改文件
   vi /usr/local/arm/qt_arm/qte/src/kernel/qwsmouse_qws.cpp
    其中有3处/ect/pointercal 将其改为/tmp/pointercal
    (这里因为我的根文件系统不可写,默认的/etc下不可写,所以在校准的时候把pointercal方到了/tmp/下,这里按照你//自己校准文件的存放路径改即可,如果是可读根文件系统,就不用修改了)
目标板子最好为可写文件系统,tslib校准程序会写etc/pointercal文件,只读文件系统的话,建一个链接到/tmp目录吧

################################################

:h3600 -> input/tsraw0


################################################

(3) 在/usr/local/arm/qt_arm/qtopia/src/qt/qconfig-qpe.h的末尾加上,
这是使qt自己支持触摸屏,我也加了。
//#define QT_QWS_IPAQ
//#define QT_QWS_IPAQ_RAW


==============================================
编译修改工作
//①、vi /root/yizhi/qtopia-free-2.2.0/qtopia/mkspecs/qws
/linux-arm-g++/qmake.conf
将此行
QMAKE_LIBS_QT = -lqte
修改为
QMAKE_LIBS_QT = -lqte -luuid -ljpeg -lts
②、 如果想让Qtopia支持鼠标,需要修改/usr/local/arm/qt_arm/qtopia/src/qt/qconfig-qpe.h文件
注释如下部分
/*
#ifndef QT_NO_QWS_CURSOR
#define QT_NO_QWS_CURSOR
#endif
#ifndef QT_NO_QWS_MOUSE_AUTO
#define QT_NO_QWS_MOUSE_AUTO
#endif
#ifndef QT_NO_QWS_MOUSE_PC
#define QT_NO_QWS_MOUSE_PC
#endif
*/
============================================


    cp /usr/local/arm/qt_arm/qtopia/src/qt/qconfig-qpe.h
        /usr/local/arm/qt_arm/qte/src/tools


=====================================================================================
(4) 开始configure了 qte ,qtopia (加入:-tslib)
=====================================================================================
cd qte
./configure -qconfig qpe -no-xft -qvfb -depths 4,8,12,16 -xplatform linux-arm-g++ -system-jpeg -gif -tslib
make

cd ..

cd qtopia
./configure -edition pda -prefix /usr/local/arm/qt_arm/board -xplatform linux-arm-g++ -displaysize 320x240

make
make install


=====================================================================================
(5) 拷贝库与触摸屏校准/测试程序
=====================================================================================
      mkdir /qt_arm/board/bin/tests          
      //mkdir /qt_arm/board/lib/ts
      cp /qt_arm/tslib/tests/.libs/ts_*   /qt_arm/board/bin/tests //几个所需的测试文件,比如生成的校准文件,测试文件等
      cp /qt_arm/tslib/src/.libs/libts-0.0.so.0* /qt_arm/board/lib         //几个所需的库文件
      cp /qt_arm/tslib/src/.libs/libts.so    /qt_arm/board/lib         //几个所需的库文件
      cp /qt_arm/tslib/plugins/.libs/*.so /qt_arm/board/lib         //触摸屏插件模块库; 这些是ts.conf要用到的库文件
   把文件/qt_arm/tslib/etc/ts.conf文件拷贝到你的板子的/qt_arm/board目录下,并将moudle mousebuts 前面的#去掉
   下一步是要把board文件夹mount到板子的/tmp目录下


【总结】:需要拷贝的文件:
# cp e2fs/lib/libuuid.so*          board/lib/
# cp jpeg-6b/.libs/libjpeg.so*     board/lib

      # mkdir board/bin/tests   
      # cp tslib/tests/.libs/ts_*             board/bin/tests
      # cp tslib/src/.libs/libts-0.0.so.0* board/lib       
      # cp tslib/src/.libs/libts.so    board/lib       
      # cp tslib/plugins/.libs/*.so         board/lib    

# cp tslib/etc/ts.conf                  board   //将moudle mousebuts 前面的#去掉
        拷贝pointercal到board
        拷贝setnenv.sh到board
/


=====================================================================================
(6) 运行[以下操作在目标板上进行]:
=====================================================================================

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值