免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1232 | 回复: 0
打印 上一主题 下一主题

[转]今天交叉编译Qtopia-opensource-src-4.3.2 for mipsel成功了 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-06-19 22:22 |只看该作者 |倒序浏览
前一阵子,一直是用的qtopia-free-1.7.0.tar.gz,因为这个已经在开发板运行起来了的,但由于要求实现硬件鼠标,所以得去分析
qtopia的源代码;在网上逛了逛,发现qtopia最新完全版已经是4.3.2了,而且界面也十分漂亮,于是就想,既然要分析qtopia的源代码,
为什么不直接使用最新的qt4呢,而且qt4也必将是今后一段时间的主流,于是决定移植最新的qtopia-4.3.2完全版。
[color="#ff99cc"]概念:
什么是qtopia?
        Qtopia是一个面向嵌入式Linux的全方位应用程序开发平台,同时也是用于基于Linux的PDA(个人数字助理),智能电话(Smartphone)以及其他移动设备的用户界面。简单地说,Qtopia实质上是一组关于PDA和智能电话的应用程序结合,如果需要开发这类产品可以在这组程序的基础上迅速构建出PDA或者智能电话。
[color="#cc33cc"]一、环境:
        主机系统:Fedora 10
        目标板:重庆神州龙芯科技有限公司的CQ8401工控机开发板,1024x768液晶显示器,PS2鼠标、键盘
        CPU: mipsel  ,主频400MHz,
        内存64M
        文件系统:使用nfs(busybox 1.13.1)
        硬盘:160G(IDE或SATA)
        qtopia版本: qtopia 4.3.2     大小:109.89M
下载地址:
ftp://ftp.trolltech.com/qtopia/source/qtopia-opensource-src-4.3.2.tar.gz
        交叉编译器:mipsel-linux-gcc, mipsel-linux-g++    //gcc版本3.3.6
[color="#cc33cc"]二、准备工作:
        建立build目录和安装目录:
        目录结构:
        /opt/qtopia/source     源代码解压到该目录(根据.configure提示,必须为source目录。
                        /opt/qtopia/target        编译目录:存放configure,make产生的文件(编译目录不能为source目录)
        /usr/local/qtopia        安装目录,安装后,复制到nfs文件系统的对应目录下,如:我的nfs文件系统结构为:/nfsroot/cq8401/{bin,etc,lib,opt,tmp,usr,var}
那么就将/usr/local/qtopia这个qtopia目录复制到/nfsroot/cq8401/usr/local目录下,为什么呢?因为你进入开发板上的系统后运行QT应用程序,它会搜索/usr/local/qtopia下的库配置!
[color="#cc99ff"]三、配置与编译:
[color="#ff0000"]
[color="#ff0000"]

由于我之前没有配置这个,导致屏幕中间没有光标出现,只有我的硬件鼠标,但我实现的硬件鼠标还没有与QT的鼠标事件接口
结合上,导致老是点击无效,要猜测QT当前的鼠标位置在哪里!
cd /opt/qtopia/source
# vi qtopiacore/qconfig-qpe.h
首先注释掉关于鼠标光标的宏定义,让程序运行时,屏中央有光标出现:
// Qtopia Core
/*
[color="#0000ff"]#ifndef QT_NO_QWS_CURSOR
[color="#0000ff"]#  define QT_NO_QWS_CURSOR
[color="#0000ff"]#endif
*/
/*
[color="#0000ff"]#ifndef QT_NO_QWS_MOUSE
[color="#0000ff"]#  define QT_NO_QWS_MOUSE
[color="#0000ff"]#endif
[color="#0000ff"]#ifndef QT_NO_QWS_MOUSE_AUTO
[color="#0000ff"]#  define QT_NO_QWS_MOUSE_AUTO
[color="#0000ff"]#endif
*/
其它宏定义根据需要进行注释。
保存后将qconfig-qpe.h拷贝到global目录。
[color="#0000ff"]# cp qtopiacore/qconfig-qpe.h  qtopiacore/qt/src/corelib/global/qconfig-qpe.h
注释掉其他文件里的QT_NO_QWS_CURSOR的定义
[color="#0000ff"]# vi qtopiacore/qt/src/corelib/global/qfeatures.h
注释掉如下内容:
/*
[color="#0000ff"]#if !defined(QT_NO_QWS_CURSOR) && (defined(QT_NO_CURSOR))
[color="#0000ff"]#define QT_NO_QWS_CURSOR
[color="#0000ff"]#endif
*/
保存退出。
[color="#0000ff"]# vi qtopiacore/qt/src/corelib/global/qglobal.h
注释掉以下内容:
[color="#0000ff"]//#    define QT_NO_QWS_CURSOR
[color="#ff0000"]# cd /opt/qtopia/target
#
../source/configure -release -image /usr/local/qtopia -prefix
/usr/local/qtopia -xplatform linux-mips-g++ -arch mips -no-qvfb
-displaysize 1024x768 -no-modem -extra-qtopiacore-config "-release
-xplatform qws/linux-mips-g++ -embedded mips -qconfig qpe -depths
8,16,32 " 2>../configure_error.log
[color="#ff0000"]# make 2>../make_error.log
把错误输出到make_error.log 文件中,不然编译后,你还不知道在哪儿出错了,因为输入信息相当的多!
主要配置选项解说如下:
[color="#6600cc"]
[color="#ff0000"]-release   Create a release build.
[color="#6600cc"]-xplatform linux-mips-g++ -arch mips   //目标平台为mips-linux,体系结构为mips。(.configure它会怎么检测是大端还是小端CPU,当然,你也可以强制指定:   
-little-endian .........  Force target build to use little endian (LSB first).
-big-endian ............  Force target build to use big endian (MSB first).)
支持的arch列表:alpha, arm, boundschecker, generic, i386, ia64, macosx, [color="#ff0000"]mips, parisc, powerpc, s390, sparc, windows, x86_64
[color="#6600cc"]-no-qvfb   //目标平台已支持framebuffer,因而不使用虚拟帧缓冲。
[color="#6600cc"]-extra-qtopiacore-config  //为Qtopia core 配置选项。
[color="#6600cc"]-xplatform qws/linux-mips-g++ -embedded mips  //目标平台编译配置文件使用qtopiacore/qt/mkspecs/qws/linux-mips-g++目录下的配置文件,嵌入式平台为mips。
[color="#6600cc"]
-qconfig qpe   //使用配置文件qconfig-qpe.h,若使用qconfig-large.h配置文件,则使用-qconfig large选项。
[color="#6600cc"]
2>../confgure_error.log //最后将配置过程中的错误输出到confgure_error.log文件中。
在编译安装完成后,在/usr/local/qtopia 中的东西就是Qtopia在mipsel上运行所需要的文件
建立时区信息:
       
        复制刚才编译目录下:/opt/qtopia/target/etc/zoneinfo目录到nfs文件系统的usr/share目录下,我的就是
[color="#ff0000"]
# cp -a /opt/qtopia/target/etc/zoneinfo   /nfsroot/cq8401/usr/share/
然后复制主机:/usr/local/qtopia目录到nfs文件系统相应的目录下:(共74M)
[color="#ff0000"]# cp -a /usr/local/qtopia  /nfsroot/cq8401/usr/local/
[color="#ff0000"]

[color="#cc33cc"]四、进入开发板,配置与运行
好了,现在进入开发板系统中:
环境设置:(最好把它们写到/etc/profile文件中,免得每次重启系统后,都要重输一遍)
[color="#ff0000"]
export  HOME=/root  [color="#3333ff"]#设置用户目录,QT运行后,相应的配置文件,文档就存放在用户主目录下
[color="#ff0000"]export PATH=/usr/local/qtopia/bin:$PATH  [color="#3333ff"]#设置QT程序搜索路径
[color="#ff0000"]export LD_LIBRARY_PATH=/usr/local/qtopia/lib:$LD_LIBRARY_PATH  [color="#3333ff"]#设置QT库搜索路径
[color="#ff0000"]export  QWS_KEYBOARD_PROTO=TTY:/dev/tty0   [color="#3333ff"]#设置键盘
[color="#ff0000"]export QWS_MOUSE_PROTO=MouseMan:/dev/input/mice  [color="#3333ff"]#设置鼠标设置
[color="#ff0000"]export TZ=Asia/Chongqing           [color="#3333ff"]#此句设置时区,可以为Beijing,或Shanghai,我在重庆,所以就设置为Chongqing了
[color="#ff0000"]export QWS_DISPLAY="LinuxFb:mmWidth35:mmHeight45:0" [color="#3333ff"]#此句显示字体和图标。
完成后,在命令行执行
# qpe -qws&
如果看到目标板屏幕上启动的Qtopia 说明已经成功了。
[color="#ff0000"]
(欢迎转载,但请注明出处:
http://blog.csdn.net/sabalol/archive/2009/01/08/3737093.aspx)
参考文章:
http://blog.chinaunix.net/u1/49924/showart_667900.html
http://blog.csdn.net/imho888/archive/2008/12/02/3426436.aspx
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/61322/showart_1970850.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP