快速“脏”移植autoconf应用

快速“脏”移植autoconf应用

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

Contents

[hide]
  • 1 介绍
  • 2 任务1: 为项目构造一个bld.inf文件
  • 3 任务2: 构造一个MMP文件
  • 4 任务3: 自定义config.h.symbian
  • 5 任务4: 编译与修改
  • 6 任务5: 运行于调试
  • 7 完成
  • 8 See Also

介绍

随着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

  • Quick and dirty porting of autoconf apps
Retrieved from " http://wiki.forum.nokia.com/index.php/%E5%BF%AB%E9%80%9F%E2%80%9C%E8%84%8F%E2%80%9D%E7%A7%BB%E6%A4%8Dautoconf%E5%BA%94%E7%94%A8"

Related Wiki Articles

No related wiki articles found

你可能感兴趣的:(快速“脏”移植autoconf应用)