×
Namespaces

Variants
Actions

快速“脏”移植autoconf应用

From Nokia Developer Wiki
Jump to: navigation, search
Article Metadata

文章
dougcn 在 07 Jun 2008 创建
最后由 hamishwillee 在 15 Dec 2011 编辑

快速“脏”移植autoconf应用

本文译自: Quick and dirty porting of autoconf apps

Contents

介绍

随着OpenC plugin的发布,将现有的开源项目移植到Symbian OS变得更容易了。下面以使用autotools开发的开源项目为例,说明如何快速将其改造成一个Symbian项目。

我将使用libxml2[1]作为样例项目,但这些步骤一般来说也适合任何项目。

任务1: 为项目构造一个bld.inf文件

移植软件到Symbian OS的首要任务是书写一个bld.inf文件。对于象libxml2这样的库,将会导出所有适当的头文件到\epo32\include下的目录树,以及一个自定义的config.h文件。

打开适当的Makefile.am文件,然后定位导出的头文件列表。在libxml2,就是:

xmlinc_HEADERS = \
SAX.h \
entities.h \
encoding.h \
parser.h \
 
/* ... etc ... */

拷贝粘贴这些内容到你的bld.inf文件,在PRJ_EXPORTS的下面。重写每一行导出到\epoc32\include下的一个适当的子目录。在这个例子中,我们将导出到\epoc32\include\libxml目录,如下:

PRJ_EXPORTS
..\include\libxml\SAX.h libxml\SAX.h
..\include\libxml\entities.h libxml\entities.h
..\include\libxml\encoding.h libxml\encoding.h
..\include\libxml\parser.h libxml\parser.h
 
/* ... etc ... */

现在,创建一个config.h.in文件的拷贝,起名为config.h.symbian,然后再添加一个导出项,如下:

..\config.h.symbian libxml\config.h

现在,导出完成了。从命令行,键入"bldmake bldfiles"并执行,然后再执行"abld export"命令导出头文件。

任务2: 构造一个MMP文件

为你的项目创建一个空的MMP文件,然后添加MMP文件头,如下:

TARGET          libxml2.dll
TARGETTYPE dll
UID 0x1000008d 0xDEADBEEF
VENDORID 0

上面0xDEADBEEF应以你从Symbian Signed申请的UID替代。现在,再次在Makefile.am文件中查找项目源代码文件列表。对于libxml2来说,如下:

libxml2_la_SOURCES = SAX.c entities.c encoding.c error.c parserInternals.c  \
parser.c tree.c hash.c list.c xmlIO.c xmlmemory.c uri.c \
 
/* ... etc ... */

拷贝粘贴这个到你的MMP文件,然后每一个改造成SOURCE行。如下:

SOURCEPATH      ..\
SOURCE SAX.c
SOURCE entities.c
SOURCE encoding.c
SOURCE error.c
SOURCE parserInternals.c
SOURCE parser.c
SOURCE tree.c
 
/* ... etc ... */

现在,添加一些系统头文件路径。至少需要stdapis目录,然后是你导出所有项目头文件的那个文件夹。如下所示:

SYSTEMINCLUDE   \epoc32\include 
SYSTEMINCLUDE \epoc32\include\stdapis
SYSTEMINCLUDE \epoc32\include\libxml

然后,添加libraries行将项目链接到libc,接着是指定一些能力(capabilities),就完成了。

对于一些项目来说,定义宏HAVE_CONFIG_H也许是必须的,以便引用config.h文件。libxml项目用不着这个,但要完成这个的话,在你的MMP文件包含这一行:

MACRO HAVE_CONFIG_H

任务3: 自定义config.h.symbian

现在将完成的MMP文件导入你喜欢的IDE。下一步我们需要给Symbian平台自定义config.h。对于config.h中的每一项,你需要决定它合适Symbian与否。有一些项是很容易判断的。比如,象这些:

#undef HAVE_FCNTL_H

我们知道Symbian有这个宏定义,那就可以改为:

#define HAVE_FCNTL_H 1

其他的不那么简单,它们控制应用程序的行为。若你不确信config.h中的定义做了些什么,那就在代码中搜索它,阅读使用它的上下文,然后决定它是该on还是off。

一旦完成,记住再次导出以便更新\epoc32\include下的config.h文件。

任务4: 编译与修改

现在编译项目。若编译失败,那么就修改编译错误。显然,这随应用不同而不同,因此对这个没有什么特别的建议。libxml2编译完好。

任务5: 运行于调试

现在运行应用程序,或使用该库的应用程序。再次,你可能碰到错误,但这个指导建议不了具体的修改措施。

完成

就是这些了。现在你应该有一个可工作的Symbian可执行文件或库了。从始至终,libxml2花了半小时到1小时时间导出。

希望能有所帮助。

See Also

This page was last modified on 15 December 2011, at 09:37.
64 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×