在WinXP+VS2005下编译omniORB-4.1.3

来源:互联网 发布:linux echo > 编辑:程序博客网 时间:2024/05/17 07:49

 

在WinXP+VS2005下编译omniORB-4.1.3

Bob.shao

2009-3-22

 

1.为何折腾

    笔者目前正准备写一个远程控制软件,需要跨平台,正作技术选型,看完SOAP,XML_RPC,WebService,觉得都不是令自己很满意,于是看上了CORBA,嗯,这个东东已前听说过,还从未涉猎。网上下载了一些CORBA的知识,发现开源ORB的实现有许多,比如omniORB,ORBit,TAO等等。选择omniORB,是因为有人在他的网页将它排在第一位介绍。在网上搜索过程中,发现对这方面讨论较少,而且貌似是过时的技术,我心想,技术哪怕过时,思想是不过时的,这么经典的东西,先学习一下再说。

 

2.开始折腾

    2.1.得到源码

    从http://omniorb.sourceforge.net/list.html下载源代码包,我下载的是omniORB-4.1.3。比如在本地解压至C:// omniORB.

同时建议在该网址下载各种文档

 

    2.2.编译步骤

    2.2.1.配置Cygwin

    Cygwin的全量版本可以从http://www.cygwin.com/下载 ,你也可以从http://omniorb.sourceforge.net/att_packages/gnu-win32-lite.zip下载必须的包,将它解压至C:/gnuwin32,将C:/gnuwin32/bin设置在你系统的PATH环境变量,之后进命令行运行C:/gnuwin32/bin/checkmounts C:/gnuwin32,若成功,则会看到提示。

 

    2.2.2.配置Python

    Omniidl需要Python 1.5.2或者更高的版本,你可以从http://www.python.org/download/download_windows.html下载全量版本,也可以从http://omniorb.sourceforge.net/att_packages/omnipython-x86_win32.zip下载必须的文件,将它解压至C:// omniORB.

 

    2.2.3.配置编译平台

    打开C:// omniORB //config//config.mk,比如我想在VS2005下编译,则将platform = x86_win32_vs_8之前的#号去掉。此处可见, omniORB还挺人性化,它把所有可能的平台都写在配置文件中,并且用#符号注释掉,用户只需要将自己关注的平台前的#去掉即可。

 

    2.2.4.配置Python的位置

    打开C:// omniORB//mk//platforms//x86_win32_vs_8.mk.将PYTHON = $(ABSTOP)/$(BINDIR)/omnipython前的#号去掉。

 

    2.2.5.开始编译

    在命令行进入到C:// omniORB//Src目录,执行make export即可,由于这样执行的话,过程中的提示信息会被刷屏而看不到,建议写成这样make export > info.txt,这样编译时的信息会重定向至C:// omniORB//Src下的info.txt文件中,方便查看。

 

3.遇到问题

  1.  提示*.d文件找不到*.h文件,此类解决方法是,停止编译,将C:// omniORB下的*.d文件全部删除,然后重新编译即可。
  2. 提示Cannot open include file: 'openssl/ssl.h': No such file or directory,这是由于omniORB虽然支持SSL,但未将openssl包随同发布,你可以下载openssl包,进行配置,我想着尽快编译成功,所以暂时关闭SSL功能,将C:// omniORB//mk//platforms//x86_win32_vs_8.mk中的OPEN_SSL_ROOT项注释掉即可。
  3. 提醒omniNames.exe编译出错,但错误原因似乎并没有显示出来,因为我没有找到。郁闷,网上找了很多信息,无助。

 

4.折腾感言

    这算是一次失败的经历,但从中学习到CORBA的一些东西,发现这里面是比较复杂的,有许多概念还未理清。不是笔者畏惧复杂,不想把最后那个问题搞定,只是觉得这玩意儿太重量级了,对于一个远程控制应用来讲,以后应用与部署肯定会有许多问题。嗯,那就留作以后再学习吧,不过,我对于其整体想法与架构还是比较感兴趣的,等这个项目过去,可能会写些应用吧。

    网上又搜索了一上,发现了替换CORBA的方案zeroc-ICE(http://www.zeroc.com/),让我们看看ICE首页上的话:

The Internet Communications Engine (Ice) is a modern object-oriented middleware with support for C++, .NET, Java, Python,Ruby, and PHP. Ice is used in many mission-critical projects by companies all over the world.

Ice is easy to learn, yet provides a powerful network infrastructure and vast array of features for demanding technical applications. Ice shines where technologies such as SOAP or CORBA are too slow and complex.

    看来,它矛头直指SOAP和CORBA,显得非常自信,嗯,让我试试它:)