登录 用户中心() [退出] 后台管理 注册
   
您的位置: 首页 >> 程序员学前班[不再更新,只读] >> 主题: 在x86 linux主机上编译OPIE-1.2.2的详细过程 [zt 加我自己的一些重要提示!]     [回主站]     [分站链接]
标题
在x86 linux主机上编译OPIE-1.2.2的详细过程 [zt 加我自己的一些重要提示!]
我是马甲
浏览(0) + 2007-06-06 16:56:51 发表 编辑

关键字:

在x86 linux主机上编译OPIE-1.2.2的详细过程

在x86 linux主机上编译OPIE-1.2.2的详细过程

作者:李德

Email:mailtolide@sina.com

时间:2007-1-5

今天在Fedora 6主机上成功编译OPIE-1.2.2(Open Palmtop Integrated Environment,即掌上电脑开放集成环境),因为中间也经历了一些小波折,故特此撰文,希望能对进行同样工作的新手有所帮助。应该说最好的是一个全安装的Redhat 9,我的是Fedora 6,gcc的版本比较高是gcc4,所以问题也比较多。下面就以Fedora 6为平台说明安装过程。

一.主机环境准备

1. 先检查主机下面的包是否安装:

libfreetype6-dev

libjpeg62-dev

libpam0g-dev

libpng12-dev

zlib1g-dev

libbluetooth1-dev

libpcsclite-dev

pkg-config

可能你的机器中包的名称不一定和上面的完全一样,最好在Fedora的“添加删除程序”中搜索关键字,我分别搜索了freetype,jpeg,pam,png,zlib,bluetooth,pcsc和pkg,找到的包名分别是:

freetype-devel-2.2.1

libjpeg-devel-6b

pam-devel-0.99

libpng-devel-1.2.10

zlib-devel-1.2.3

libbluetooth1-dev <=这个没找到,后面出了问题,不过也找到了解决办法

pcsc-lite-libs-1.3.1

pkgconfig-0.21

2.准备文件夹

我的文件夹是这样的,先在home下建立一个opiehome的文件夹,作为工作目录。

mkdir /home/opiehome

exports OPIEHOME=/home/opiehome

上面的两句你可以根据自己的情况设定,下面我们按照相对路径说明

cd $OPIEHOME

二、软件下载准备

1.Opie-1.2.2

下载地址:http://opie.handhelds.org/feed/source/stable/opie-1.2.2.tr.bz2

下载后解压到$OPIEHOME.名称为opie-1.2.2

tar jxvf opie-1.2.2.tr.bz2 –C $OPIEHOME

你也可以从cvs下载,相关命令如下:

cvs -d:pserver:anoncvs@cvs.handhelds.org:/cvs login

然后提示输入密码,密码是anoncvs,(注意:此时当前目录应该是$OPIEHOME,如果不是就cd $OPIEHOME)然后输入:

cvs -z3 -d:pserver:anoncvs@cvs.handhelds.org:/cvs co opie

等一会儿,就开始下载了,比较慢,耐心点哦,我是根据上面的地址用讯雷下的。

用cvs下载后可能名称不是opie,如果你是新手,为方便按照文档走,请改名为opie-1.2.2。

mv opie opie-1.2.2

2.qt-embedded-2.3.10

下载地址:

ftp://ftp.trolltech.com/pub/qt/source/qt-embedded-2.3.10-free.tar.gz

下载后解压到$OPIEHOME.名称为qt-2.3.10

tar zxvf qt-embedded-2.3.10-free.tar.gz

3.uic

为了编译Opie ,需要下载QT/Embedded,但是为了编译QT/Embedded,又需要QT/X11的 uic编译器(它将qt2-designer创建的UI格式的文件转换成cpp文件),你可以下载QT/X11编译生成uic,也可以从网上下载一个uic。

cd $OPIEHOME

wget http://vanille.de/tools/uic-qt2

下载后改变权限

chmod u+rx uic-qt2

4. qvfb

为了在x86 Linux平台上运行Opie,需要qvfb (Qt Virtual Frame Buffer),就像uic一样,你也可以从网上直接下载一个:

wget http://vanille.de/tools/qvfb-qt2

下载后改变权限

chmod u+rx qvfb-qt2



同样,你还可以在http://vanille.de/tools/中下载designer-qt2, linguist等其它工具,不过现在就opie的编译和运行,有上面的就足够了。



三、编译Qt/Embedded

1. 设置环境变量

export QTDIR=$OPIEHOME/qt-2.3.10

export OPIEDIR=$OPIEHOME/opie-1.2.2



2. 链接uic和qvfb

cd $QTDIR

mkdir bin

ln -s $QTDIR/../uic-qt2 bin/uic

ln -s $QTDIR/../qvfb-qt2 bin/qvfb

3. 给Qt/Embedded打补丁

ln -s $OPIEDIR/qt/qconfig-qpe.h src/tools/

patch -p1 < $OPIEDIR/qt/qt-2.3.10.patch/qte-2.3.10-all.patch

4. 配置和编译

./configure -qconfig qpe -depths 4,16,24,32 -system-jpeg -system-libpng -system-zlib -no-xft -qvfb

make



编译过程出现错误:

错误一:

error: ‘QWSInputMethod’ has not been declared

修正方法:

cd $QTDIR/src/kernel //$DTDIR=/home/opiehome/qt-2.3.10

gedit qwindowsystem_qws.h

在前面增加以下两行

class QWSInputMethod;

class QWSGestureMethod;



错误二:

qvaluestack.h:57: 错误:不能从 ‘QValueListIterator’ 转换到 ‘const char*’,为实参 ‘1’(属于 ‘int remove(const char*)’)

修正方法:

gedit $QTDIR/include/qvaluestack.h &

将remove( this->fromLast() );改为this->remove( this->fromLast() );



5. 设置环境变量PATH

export PATH=$QTDIR/bin:$PATH





四、编译OPIE

1. 配置和编译

cd $OPIEDIR

make clean

make menuconfig

make



注意:make clean命令结束的时候可能会启动一大堆yes和no的配置选项,我索性Ctrl+z结束了,因为make menuconfig中有友好界面的详细配置。



编译过程出现错误:

错误一:

/home/opiehome/opie-1.2.2/inputmethods/dasher/QtDasherScreen.h

修正方法:

将QtDasherScreen::~QtDasherScreen();改为~QtDasherScreen();

将 long QtDasherScreen::get_time();改为long get_time();



错误二:



output.c: In function ‘int mpeg3video_ditherframe

修正方法:

/* modified by lide

#define STORE_PIXEL_RGB565 \

*((unsigned short*)data)++ = \

((CLIP(r_l) & 0xf8) << 8) | \

((CLIP(g_l) & 0xfc) << 3) | \

((CLIP(b_l) & 0xf8) >> 3);

*/

#define STORE_PIXEL_RGB565 \

*data++ = CLIP(r_l); \

*data++ = CLIP(g_l); \

*data++ = CLIP(b_l);



错误三:

找不到opietooth1,于是返回make menuconfig,发现bluetooth没有选中,于是选中



错误四:

又有错误,/home/opiehome/opie-1.2.2/noncore/net/opietooth/lib/bt-serial.c中

#include

#include

#include

#include

这四个头文件找不到。



修正方法:

于是在qtopia-4.2.0/src/3rdparty/libraries/bluez/bluetooth中发现有这几个文件。

索性将bluetooth文件夹拷贝到/usr/include/bluetooth

mkdir /usr/include/bluetooth

cp qtopia-4.2.0/src/3rdparty/libraries/bluez/bluetooth/* /usr/include/bluetooth

再次编译,等待好久,终于编译成功啦!



2. 设置环境变量

新建一个文件/home/opiehome/opie-exports.bat,内容如下:

export OPIEHOME=/home/opiehome

export QTDIR=$OPIEHOME/qt-2.3.10

export OPIEDIR=$OPIEHOME/opie-1.2.2

export LD_LIBRARY_PATH=$QTDIR/lib:$OPIEDIR/lib

export PATH=$QTDIR/bin:$OPIEDIR/bin:$PATH

export QWS_DISPLAY=QVFb:0

存盘,执行

source /home/opiehome/opie-exports.bat



3. 运行

启动opie

$QTDIR/bin/qvfb &

$OPIEDIR/bin/qpe

就会看到效果啦

我是马甲
2007-6-6 17:05:33 发表 编辑

来自 http://www.hzlitai.com.cn/bbs/dispbbs.asp?boardid=5&id=6378

其实在 redhat 9 下 qt 我是一次性通过(牛啊,首次一次编译linux程序成功).

"找不到opietooth1" 的问题嘛,兄弟我还是学过一段 gcc 的.所以直接改了一个最后一行命令再执行就可以了.因为它和编译过程太久,实在不想等.我修改的后命令行为:

g++ -Wl,-rpath-link,/home/vinko/opiehome/opie-1.2.2/lib -Wl,-rpath,/home/vinko/opiehome/qt-2.3.10/lib -shared -Wl,-soname,libopieobex.so.0 -Wl,-rpath -L/home/vinko/opiehome/qt-2.3.10/lib -lqpe -lopiecore2 -L/home/vinko/opiehome/opie-1.2.2/lib -lqte


这样做的另外一个原因是,我实在找不到在哪里设置要编译 opietooth1 .我进行 make menuconfig 的时候基本上是完全无知,直接保存默认设置了事--以后再说.



总的来说感觉不错,除了 apache 这是我编译最顺利的开源程序了.不过这样生成的 opie 似乎是不能直接在 arm 机器上运行.

不过 qvfb 生成的屏幕似乎太小了,刀远远没有我在真实arm机器上看到的漂亮.另外我是在 Xmanager Enterprise 的 xhell 下执行的,如果您是 telnet 的可能会看不到 X 的界面的. 总结 Xmanager 实在是个好东西.


总数:1 页次:1/1 首页 尾页  
总数:1 页次:1/1 首页 尾页  


所在合集/目录



发表评论:
文本/html模式切换 插入图片 文本/html模式切换


附件:



NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.

Copyright © 2005-2020 clq, All Rights Reserved
版权所有
桂ICP备15002303号-1