天嵌 ARM开发社区

 找回密码
 注册
查看: 3301|回复: 4

移植qtopia 4.3.3

[复制链接]
cexowginui 发表于 2010-5-24 23:14:37 | 显示全部楼层 |阅读模式
环境:
        PC系统: ubutnu 10.04
        目标arm板: tq2440
        qtopia 版本: qtopia-opensource-src-4.3.3.tar.gz
        在http://qtextended.org/modules/mydownloads/viewcat.php?cid=8  有下
        交叉编译器 arm-linux-gcc-4.3.2
       
       
        首先编译 移植 tslib-1.4.tar.gz
        解压到一个喜欢的地方.
        安装三个工具
            apt-get install autoconf automake libtool
        运行脚本
            ./autogen.sh        
        帧缓冲文件以及配置
            echo "ac_cv_func_malloc_0_nonnull=yes" >$ARCH_tslib.cache   
        避免检查ac_cv_func_malloc_0_nonnull,如果不写这句,在Make时候会出现undefined reference to `rpl_malloc' 的错误。
            ./configure --prefix=/usr/tslib --host=arm-linux --cache-file=$ARCH_tslib.cache --enable-inputapi=no
            make
            make install
        此时在--prefix指向的目录(这里/usr/tslib)会出现编译好的tslib文件.
        修改一下etc/ts.config
        # Uncomment if you wish to use the linux input layer event interfac
        # module_raw input  把这行的#去掉
       
       
        配置tslib运行环境变量
       
        export QWS_MOUSE_PROTO=Tslib:/dev/event0 //此处填写触摸屏的设备节点
        export T_ROOT=/usr/tslib                        //刚才的--prefix
        export LD_LIBRARY_PATH=$T_ROOT/lib  //指定tslib库文件路径
        export TSLIB_CONSOLEDEVICE=none //tslib运行需要的控制台,这里就是LCD屏幕,设定控制台设备为none,否则默认为/dev/tty
        export TSLIB_FBDEVICE=/dev/fb0 //指定帧缓冲设备
        export TSLIB_TSDEVICE=/dev/event0  //指定触摸屏设备节点文件
        export TSLIB_TSEVENTTYPE=H3600 //对tslib的设备结构体定义。
        export TSLIB_CALIBFILE=$T_ROOT/etc/pointercal
        export TSLIB_CONFFILE=$T_ROOT/etc/ts.conf
        export TSLIB_PLUGINDIR=$T_ROOT/lib/ts
       
        配置好后可以在开发里运行 tslib/bin 里面的程序测试下,接着就要编译qtopia4.3.3
       
       
       
        2 qtopia 4.3.3 的移植
        2.1 安装x11库
       
         sudo apt-get install libx11-xcb-dev libx11-6 libx11-dev
       
        2.2 解压 qtopia-opensource-src-4.3.3.tar.gz
        tar -xzvf qtopia-opensource-src-4.3.3.tar.gz -C /usr/qtopia
        会在/usr/qtopia 多出一个qtopia-opensource-4.3.3
       
        2.3 修改一些错误(最后还会列出些我出现的错误)
        vim src/libraries/qtopiabase/qmemoryfile_unix.cpp
        修改
         f = ::open(tmpFile.toLatin1(), O_CREAT | O_WRONLY);
        为:
                f = ::open(tmpFile.toLatin1(), O_CREAT | O_WRONLY ,0777);
        2.4 然后在 /usr/qtopia里新建一个目录,因为不能在qtopia-opensource-4.3.3
        里编译
        mkdir build
        cd build
        2.5 配置qtopia生成Makefile,下面是我的configure 参数
        ../qtopia-opensource-4.3.3/configure -release -image /opt/qtopia -prefix /usr/qtopia -xplatform linux-arm-g++ -arch arm  -displaysize 320x240 -no-qvfb  -no-modem -extra-qtopiacore-config "-qt-mouse-tslib -I/usr/tslib/include -L/usr/tslib/lib -qt-mouse-linuxtp -release -xplatform qws/linux-arm-g++ -embedded arm -qconfig qpe -depths 4,8,16,32 "
        这里只讲几个参数
        -image 后面跟make install 后生成的可在开发板运行的qtopia文件.
        -prefix 后面跟qtopia的运行主目录环境
        -qt-mouse-tslib 后面跟刚才编译的tslib的头文件目录的库文件目录
        还有很多设置,可以configure -help 查看
       
        2.6 之后就可以
        make
        make install
        过程漫长...
        完成后,编译好运行在arm里的文件会放到/usr/qtopia
        2.7 错误
        1)如果出现 error: explicit template specialization cannot have a storage class
        解决:
        由于qt是用低版本gcc写的,现在机器是4.3.0,高了,
        但是任何一个用低版本gcc写的软件 ,在用高版本gcc编译安装的时候出现错误 ,都可以通过修改源码改正 错误
        把temple那个static 去掉,,,
        #模板类中,如果模板那个参数类型已经指定(在函数声明实现的时候),必须把声明和实现放在一个文件中,这个时候把函数声明为static会冲突
        #如果是一个一般的模板类,声明和定义可以分开,这个是到链接时候才知道类型,把函数声明为static不冲突

        2)/usr/mipsel-linux-gnu/include/c++/4.3.1/bits/locale_classes.tcc:102: error: ‘dynamic_cast_not_allowed’was not declared in this scope
        修改办法:
        /opt/qtopia/build/src/server/Makefile.target的DEFINES里面删除以下信息-Ddynamic_cast=dynamic_cast_not_allowed
       
        我就出现这些错误了,还有的google吧.
       
        下面设置qtopia环境变量参数和测试
以下是我的环境变量参数配置
export QWS_SIZE=320x240

export LD_LIBRARY_PATH=/usr/qtopia/lib:$LD_LIBRARY_PATH
export QWS_KEYBOARD="TTY:/dev/tty0"
export QWS_MOUSE_PROTO="Tslib:/dev/event0"
export QWS_DISPLAY="LinuxFb:mmWidth35:mmHeight45:0"
export HOME=/root
export QPEDIR=/usr/qtopia:$QPEDIR
export TSLIB_TSEVENTTYYPE=H3600
export QWS_SW_CURSOR=
export TSLIB_PLUGINDIR=/usr/tslib/lib/ts
export TSLIB_CONFFILE=/usr/tslib/etc/ts.conf

测试:
        把上面编译的好的tslib 和 qtopia 放到开发板里,也可以用NFS挂载.
        设置上面的tslib和qtopia环境变量.运行qtopia/bin/qpe(运行前要kill掉正在运行的qpe).
        等一下,界面马上就出来...
        好了的话,你可以看到qtopia的界面.
也可以像制作qtopia 2(tq教程有)那样制作qtopia 4 的文件系统.
ajiang17 发表于 2010-5-25 12:33:50 | 显示全部楼层
不错   试试!!
亚瑟王 发表于 2010-5-25 19:12:11 | 显示全部楼层
呵呵,建议多多出这样的教程。
kelvinjie 发表于 2010-9-23 08:25:29 | 显示全部楼层
顶一个!~~~~~~~~
wenshan231 发表于 2010-9-27 00:25:27 | 显示全部楼层
有才 谢了 值得学习
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2024-10-6 10:26 , Processed in 1.017617 second(s), 18 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

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