您的位置:首页 > 编程语言 > Qt开发

移植Qtopia-opensource-src-4.3.2

2012-05-06 18:24 316 查看
http://blog.21ic.com/user1/5715/archives/2009/58919.html

1、下载

下载地址:ftp://ftp.trolltech.com/qtopia/source/qtopia-opensource-src-4.3.2.tar.gz

2、准备工作

建立build目录和安装目录:

/opt/qtopia/source 源代码解压到该目录

/opt/qtopia/target 编译目录

/usr/local/qtopia 安装目录

3、编译tslib-1.3.tar.bz2

详细步骤如下:

# tar jxvf tslib-1.3.tar.bz2

# cd tslib-1.3

# export CC=arm-linux-gcc

# export CXX=arm-linux-g++

# ./autogen.sh

# ./configure --prefix=/opt/tslib --host=arm-linux

# make

# make install

注意:

当然,在ubuntu下要先安装两个工具,如果没安装,./autogen.sh是通不过的,安装如下:

#sudo apt-get install libtool automake

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

修改如下:

#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

5、配置、编译qtopia

#cd /opt/qtopia/target

#../source/configure -release -image /usr/local/qtopia -prefix /usr/local/qtopia -xplatform

linux-arm-g++ -arch arm -no-qvfb -displaysize 800x480 -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/opt/tslib/include -L/opt/tslib/lib"

主要配置选项解说如下:

-xplatform linux-arm-g++ -arch arm 目标平台为arm-linux,体系结构为arm。

-no-qvfb 目标平台已支持buffer,因而不使用虚拟帧缓冲。

-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

#make install

Make 过程会出现一些问题,无非就是一些库没安装,装上即可。

编译完后,把opt/tslib/lib下的库复制到/usr/local/qtopia/lib下

6、进入开发板,配置与运行

#mount –t nfs 192.168.2.223:/ /tmp –o proto=tcp –o nolock

#mkdir –p /usr/local/qtopia

#mount /tmp/usr/local/qtopia /usr/local/qtopia

#cd /usr/local/qtopia/bin

#export QWS_DISPLAY="LinuxFb:mmWidth35:mmHeight45:0"

#./qpe &

如果没问题民,就成功了。

后记:

1、编译完tslib后,要换一个终端来编译qtopia,就是取消环境变量CC和CXX,否则就会出现错误

2、触摸还没校准,可能是内核的触摸驱动没调好,也可能是环境变量还没设好

3、因为开发板的文件系统下已有时区,刚好是在/usr/share/zoneinfo下,所以不用复制过来了

4、参考来源:http://blog.csdn.net/sabalol/archive/2009/01/08/3737093.aspx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: