Chinaunix首页 | 论坛 | 博客
  • 博客访问: 348048
  • 博文数量: 69
  • 博客积分: 3077
  • 博客等级: 中校
  • 技术积分: 602
  • 用 户 组: 普通用户
  • 注册时间: 2009-06-11 09:40
个人简介

或以为孤权重,妄相忖度

文章分类

全部博文(69)

文章存档

2012年(1)

2011年(10)

2010年(39)

2009年(19)

我的朋友

分类: LINUX

2009-06-12 17:30:00

Linux2.6.26.8 移植之七:Qtopia-opensource-src-4.3.2的移植

1、下载
下载地址:

2、准备工作
建立build目录和安装目录:
/opt/source
源代码解压到该目录
/opt/build
编译目录
/opt/qtopia
安装、运行目录

3、编译tslib-1.3.tar.bz2
详细步骤如下:

#svn co svn://svn.berlios.de/tslib/trunk/tslib tslib /*获取tslib源代码*/

#cd tslib
# export CC=/usr/local/arm/3.4.1/bin/arm-linux-gcc
# export CXX=arm-linux-g++

# echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache
# ./autogen.sh
# ./configure --host=arm-linux --cache-file=arm-linux.cache --prefix=/home/arm/tslib --enable-inputapi=no
# make
# make install

注意
1
、在ubuntu下要先安装两个工具,如果没安装,./autogen.sh是通不过的,安装如下:
#sudo apt-get install libtool automake
2
Make 过程中有个错误,如下:
libtool:link: only absolute run-paths are allowed
要修改/tslib/plugins/Makefile里面找rpath
LDFLAGS :=$(LDFLAGS) -rpath $(PLUGIN_DIR)
修改为:
LDFLAGS :=$(LDFLAGS) -rpath `cd $(PLUGIN_DIR) && pwd`

4、修改源代码把qtopia-opensource-src-4.3.2.tar.gz解压到source
#cp qtopia-opensource-src-4.3.2.tar.gz /opt/qtopia/
#tar –xzvf qtopia-opensource-src-4.3.2.tar.gz
#mv qtopia-opensource-4.3.2 source

1修改如下:
#cd source
# vi qtopiacore/qconfig-qpe.h
首先注释掉关于鼠标光标的宏定义,让程序运行时,触摸屏中央有光标出现:
// Qtopia Core
/*
#ifndef QT_NO_QWS_CURSOR
#  define QT_NO_QWS_CURSOR
#endif
*/
/*
#ifndef QT_NO_QWS_MOUSE
#  define QT_NO_QWS_MOUSE
#endif
#ifndef QT_NO_QWS_MOUSE_AUTO
#  define QT_NO_QWS_MOUSE_AUTO
#endif
*/
其它宏定义根据需要进行注释。

保存后将qconfig-qpe.h拷贝到global目录。

# cp qtopiacore/qconfig-qpe.h qtopiacore/qt/src/corelib/global/qconfig-qpe.h

注释掉其他文件里的QT_NO_QWS_CURSOR的定义
# vi qtopiacore/qt/src/corelib/global/qfeatures.h
注释掉如下内容:

/*
#if !defined(QT_NO_QWS_CURSOR) && (defined(QT_NO_CURSOR))
#define QT_NO_QWS_CURSOR
#endif
*/
保存退出。

# vi qtopiacore/qt/src/corelib/global/qglobal.h
注释掉以下内容:

//#    define QT_NO_QWS_CURSOR

2修改3.4.1版的arm编译器的文件

# cd /usr/local/arm/3.4.1/

# vi arm-linux/include/linux/videodev2.h

在其中添加如下内容:

#define V4L2_PIX_FMT_SBGGR8  v4l2_fourcc('B','A','8','1')  /* 8  BGBG.. GRGR.. */

保存退出。

# vi arm-linux/sys_include/linux/videodev2.h

在其中添加如下内容:

#define V4L2_PIX_FMT_SBGGR8  v4l2_fourcc('B','A','8','1')  /* 8  BGBG.. GRGR.. */

保存退出。

 否则会提示错误或警告信息:

/opt/source/src/applications/camera/formatconverter.cpp: In static member function `static camera::FormatConverter* camera::FormatConverter::createFormatConverter(unsigned int, int, int)':

/opt/source/src/applications/camera/formatconverter.cpp:75: error: `V4L2_PIX_FMT_SBGGR8' undeclared (first use this function)

/opt/source/src/applications/camera/formatconverter.cpp:75: error: (Each undeclared identifier is reported only once for each function it appears in.)

/opt/source/src/applications/camera/formatconverter.cpp: In static member function `static QList camera::FormatConverter::supportedFormats()':

/opt/source/src/applications/camera/formatconverter.cpp:97: error: `V4L2_PIX_FMT_SBGGR8' undeclared (first use this function)

make[5]: *** [.obj/release-shared/formatconverter.o] 错误 1

make[4]: *** [all] 错误 2

make[3]: *** [sub-applications-camera] 错误 2

make[2]: *** [all] 错误 2

make[1]: *** [qtopia_all] 错误 2

make: *** [all] 错误 2

5、配置、编译qtopia
#cd /opt/build
#../qtopia-opensource-4.3.2/configure -release -image /usr/local/qtopia -prefix /usr/local/qtopia -xplatform linux-arm-g++ -arch arm -no-qvfb -displaysize 240x320 -no-modem -extra-qt-config "-little-endian" -extra-qtopiacore-config "-release -xplatform qws/linux-arm-g++ -embedded arm -qconfig qpe -depths 8,16,32 -qt-sql-sqlite  -qt-kbd-usb -no-kbd-tty -no-mouse-linuxtp  -qt-mouse-tslib -I/home/arm/tslib/include -L/home/arm/tslib/lib"

#../source/configure -release -image /opt/qtopia -prefix /opt/qtopia -xplatform linux-arm-g++ -arch arm -no-qvfb -displaysize 240*320 -no-modem -extra-qtopiacore-config "-release -xplatform qws/linux-arm-g++ -embedded arm -qconfig qpe -depths 4,8,16,32 -no-mouse-linuxtp -qt-mouse-tslib -I/home/arm/tslib/include -L/home/arm/tslib/lib" 2>../confgureERR.txt

主要配置选项解说如下:

-no-feature-CURSOR 不要鼠标指针支持
-xplatform linux-arm-g++ -arch arm
目标平台为arm-linux,体系结构为arm
-no-qvfb 
目标平台已支持framebuffer,因而不使用虚拟帧缓冲。

-extra-qtopiacore-config
Qtopia core 配置选项。

-xplatform qws/linux-arm-g++ -embedded arm
目标平台编译配置文件使用

qtopiacore/qt/mkspecs/qws/linux-arm-g++目录下的配置文件,嵌入式平台为arm
-qconfig qpe
使用配置文件qconfig-qpe.h,若使用qconfig-large.h配置文件,则使用-qconfig large

选项。
-qt-sql-sqlite
数据库支持Sqlite

-qt-kbd-usb
键盘支持usb协议。

-no-mouse-linuxtp -qt-mouse-tslib -I/opt/tslib/include -L/opt/tslib/lib
触摸屏协议不支持linuxtp,支持tslib,并在后面添加上刚才编译的tslib的头文件和库。

#make /usr/bin/gmake
#make install /usr/bin/gmake install

Make 过程会出现一些问题,无非就是一些库没安装,装上即可。
编译完后,把opt/tslib/lib下的库复制到/usr/local/qtopia/lib

6、进入开发板,配置与运行
# export PATH=/opt/qtopia/bin:$PATH

#export LD_LIBRARY_PATH=/opt/qtopia/lib:$LD_LIBRARY_PATH

#export QWS_MOUSE_PROTO= "Tslib:/dev/event0"

/*这一句很重要,如果QTOPIA编译配置选项时指定了-qt-mouse-tslib参数,那么这里必须为Tslib,如果没有指定为Tslib那么这里应该设定为LinuxTP:/dev/event0*/

#export POINTERCAL_FILE=/etc/pointercal/*这一句也是必须,告诉QTOPIA:pointercal文件在哪里*/
#export QWS_DISPLAY="LinuxFb:mmWidth35:mmHeight45:0"
#./qpe &
如果没问题,就成功了。

后记:
1
、编译完tslib后,要换一个终端来编译qtopia,就是取消环境变量CCCXX,否则就会出现错误
2
、触摸还没校准,可能是内核的触摸驱动没调好,也可能是环境变量还没设好
3
、因为开发板的文件系统下已有时区,刚好是在/usr/share/zoneinfo下,所以不用复制过来了
4
、参考来源:http://blog.csdn.net/sabalol/archive/2009/01/08/3737093.aspx

http://blog.chinaunix.net/u3/91092/showart_1916162.html

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

meifeng32009-07-19 12:31:37

你好,今天看了你的QTOPIA4.3.2移植,获益不浅,按照你的流程一步步做,编译也通过了,但是却在最后启动阶段出了问题,提示不能创建什么的,我不知道怎样回事,用的是MINI2440开发板,文件系统和内核用开发板自带的,其中已经去除原系统的QTOPIA2.2,加入QTOPIA4.3.2 运行时出现以下提示。 [root@FriendlyARM /]# ./qpe & -/bin/sh: ./qpe: not found [root@FriendlyARM /]# [1] + Done(127) ./qpe