`
pleasetojava
  • 浏览: 730456 次
  • 性别: Icon_minigender_2
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

CORBA Programming with TAO - 2.Compile Source Code(编译ACE/TAO/CIAO)

阅读更多

CORBA Programming with TAO - 2.Compile Source Code(编译ACE/TAO/CIAO

摘要:

简要介绍如何在Windows平台上编译ACE/TAO/CIAO,及编译过程中需注意的问题。

正文:

随着ACE/TAO/CIAO研究者研究的不断深入,整个平台变得越来越庞大,涉及的工程及目录数目也越来越多,下面简要介绍一下如何在Windows平台上编译ACE/TAO/CIAO,其过程在其它平台上是类似的。

一、目录结构

在开始之前,先简要介绍一下整个产品的目录结构。ACEAdaptive Communication Environment)是整个ACE/TAO/CIAO体系的基础,由操作系统适配层、对并发/进程间通信/虚拟内存管理等的OO封装、ACE框架、网络服务组件等几个部分组成;而TAOThe ACE ORB)则是在ACE基础上建立起来的一个CORBA ORB实现;CIAOComponent Integrated ACE ORB)则是在TAO基础上的一个CORBA Component Model实现,同时CIAO也是目前相对比较成熟的一个CCM实现。

正是由于三者之间的上述关系,在目录结构上整个源码包也采用了类似下面的结构:

ACE_ROOT

├─ace

├─docs

├─...

├─TAO

├─tao

├─docs

├─orbsvcsTAO实现的众多CORBA服务被放置在这个目录下)

├─...

├─CIAO

├─ciao

├─docs

├─DAnCE

├─RACE

├─...

三个产品的帮助文档,可以在相应节点下的docs目录中找到,其中除了对相应产品特定模块或服务的说明外,还包括一些不错的Tutorial,对于我们理解相应产品很有帮助(ACE/TAO/CIAO的较完整的文档是收费的,这些随源码发布的文档虽然少,但仍颇为有用)。

二、关于编译器

可以使用VC6/7.1/8来编译ACE/TAO/CIAO,不推荐使用VC7,但由于VC6Project Settings不支持环境变量,会对我们使用CIAO带来一些麻烦(如需手动修改自动生成的工程文件),因此,笔者推荐读者使用VC8,即Visual C++ 2005来进行编译(注:现在VC++ 2005 Express可以从MS的网站上免费获得,但若安装该版本的话,需按照http://lab.msdn.microsoft.com/express/visualc/usingpsdk/default.aspx的指示安装SDK并进行相关设置)。VC8在调试器的设计上有了很大改进,同时对C++标准的支持也有了很大进步(但也变得非常耗资源),因此,下面的讨论将基于ACE-5.5+TAO-1.5+CIAO-0.5 + VC2005 Express,不保证在其它ACE或编译器版本下完全一致。

三、基本设置

好啦,废话说完了,重新回到我们的主题。

首先,设置好如下环境变量:

ACE_ROOT

TAO_ROOT

CIAO_ROOT

分别指向ACE根目录,TAO根目录(即%ACE_ROOT%/TAO),CIAO根目录(即%TAO_ROOT%/CIAO)。

%ACE_ROOT%/ace目录下添加一个文件config.h,并在其中添加如下内容:

/* -*- C++ -*- */

//=============================================================================

/**

* @file config.h

*

*/

//=============================================================================

#define ACE_HAS_STANDARD_CPP_LIBRARY 1

#include "ace\config-win32.h"

若是在其它平台上进行编译,还需要添加文件:

$ACE_ROOT/include/makeinclude/platform_macros.GNU

具体方法见ACE Installation Guide

此外,为了便于今后使用ACE/TAO/CIAO,应当将

%ACE_ROOT%/bin(部分通用工具的输出目录)

%ACE_ROOT%/lib(所有.lib.dll文件的输出目录)

添加到PATH环境变量中。

并且,需打开VC8,选择Tools -> Options -> Projects and Solutions -> VC++ Directories,添加如下编译器环境变量:

Executable files:

$(ACE_ROOT)\bin

$(CIAO_ROOT)\bin

Include files:

$(ACE_ROOT)

$(TAO_ROOT)

$(TAO_ROOT)\orbsvcs

$(CIAO_ROOT)

$(CIAO_ROOT)\ciao

Library files:

$(ACE_ROOT)\lib

四、开始编译

现在可以开始编译了,但是,在笔者的Win2000中编译ACE5.5/TAO1.5/CIAO0.5时遇到的第一个问题就是:源码包中的VC Workspace/Solution打开之后一片空白,一个工程也没有。(上一版本没有这个问题。最终通过比较源码包中的.sln文件和通过下面的方法得到的.sln文件,发现其实是由于文件是Unix格式造成的)

几经周折,终于想到了一个办法:自己运行mwc.pl重新生成工程文件。

要运行mwc.pl自然需要安装Perl,安装过程略。

下面简单说说mwc的工作原理:

mwc.pl根据参数中指定的.mwc文件的内容到相应目录下查找.mpc文件,在没有指定.mwc文件或.mwc文件中没有指定查找目录的情况下会尝试进入各子目录,查找.mpc文件(相当于一个makefile文件),按照.mpc文件生成工程信息,若连一个.mpc文件也找不到,就将当前目录下所有可识别的文件当作源文件,产生一个默认的工程文件。最终,mwc.pl将所有工程文件合并到一个独立的Solution/Workspace

.mwc文件的结构其实很简单,下面是%TAO_ROOT%/TAO_ACE.mwc的全部内容:

// -*- MPC -*-

// TAO_ACE.mwc,v 1.1 2006/02/16 09:20:48 jwillemsen Exp

workspace {

../ace

../apps/gperf/src

../ACEXML/common

../ACEXML/parser/parser

../ACEXML/apps/svcconf

../Kokyu/Kokyu.mpc

../protocols

tao

TAO_IDL

utils

orbsvcs

exclude {

orbsvcs/tests

orbsvcs/performance-tests

orbsvcs/examples

}

}

其作用就是告诉mwc.pl到哪些目录下去查找.mpc文件(若没有指定,则表示应检查所有子目录),而其中的exclude则表示应略过那些目录,如果你愿意,完全可以自己编写.mwc文件(不过,工程具体的描述文件.mpc则比较复杂,一言难尽,想一探究竟的话,最好还是看看MPC的说明文档http://www.cs.wustl.edu/~schmidt/ACE_wrappers/MPC/USAGEhttp://downloads.ociweb.com/MPC/MakeProjectCreator.pdf)。

mwc.pl的工作原理有了基本的了解后,就可以运行mwc.pl生成工程文件了。执行mwc.pl的办法很简单,如要生成使用CIAO的基本工程,可以在%CIAO_ROOT%下运行:

mwc.pl -type vc8 CIAO_TAO.mwc

上述命令将产生一个名为CIAO_TAO.slnSolution文件,有了.sln文件,就可以正式进行编译了。

应用TAO进行CORBA应用开发,下面的几个工程是必须的:

· TAO_IDL_EXE(即tao_idl,也就是我们的idl编译器,自然少不了,并且后续工程也需要用到该编译器。该工程依赖于ACETAO_IDL_BETAO_IDL_FEgperf等多个工程,编译TAO_IDL_EXE是会自动先编译这几个工程)

· PortableServer(即POA库,编写CORBA应用程序哪能离得开POA,该工程依赖于ACETAOCodeSetAnyTypeCode等工程)

· Naming_Service(即命名服务,这是对于我们开发CORBA应用相当有用的一个基本服务,该工程依赖的其它工程就更多了,就不再一一列举了)

而要使用CIAO,则还必须编译%CIAO_ROOT%/DAnCE下的多个工程,这些工程包括:

· ExecutionManager

· NodeManager

· Plan_Launcher

· NodeApplication

这几个工程是部署与配置引擎(Deployment And Configuration EngineDAnCE)的一部分,负责处理面向组件的应用的部署与配置。

由于工程之间存在的复杂依赖关系,你只需编译最后这三个工程,就可以自动完成约30个工程的编译工作。编译完以上工程后,你的%ACE_ROOT%/lib%ACE_ROOT%/bin下会多出来一些.lib.dll.exe文件。作为一个ORB服务,Name_Service.exe被放在其对应的子目录%TAO_ROOT%/orbsvcs/Name_Service下。

注:

1、为了编译CIAO_XML_Utils,需要安装Xerces-C++ 2.7.0,但http://xml.apache.org/xerces-c/提供的下载采用VC6编译,该版本不能用于VC7及以上版本,如果你用的不是VC6,则需要下载源码重新编译。如果你用的是VC++ 2005 Express,由于没有ATLMFC,在编译时会遇到一些麻烦,可以在SDK Dir\include下自行添加一个WINRES.h,在其中添加如下代码(两行,空行是必须的):

#include <winresrc.h>

2、如果要试用CIAO,还需用到cidl编译器cidlc,该工具可以从http://www.dre.vanderbilt.edu/cidlc/binary/下载。

参考:

1. Building and Installing ACE and Its Auxiliary Libraries and Services. http://www.cs.wustl.edu/~schmidt/ACE_wrappers/ACE-INSTALL.html

2. Building and Installing CIAO. http://www.cs.wustl.edu/~schmidt/ACE_wrappers/TAO/CIAO/CIAO-INSTALL.html

3. The Makefile, Project, and Workspace Creator (MPC). http://downloads.ociweb.com/MPC/MakeProjectCreator.pdf

分享到:
评论

相关推荐

    ACE+TAO源码及编译流程.zip

    ./configure --prefix=/path/to/install --with-tao --with-log-support ``` 2. 编译: 使用`make`命令开始编译过程,这可能会花费一些时间: ```bash make -j 4 ``` `-j 4`参数表示使用4个线程并行编译,...

    《CORBA Programming with TAO》

    《CORBA Programming with TAO》是一篇专门为CORBA编程初学者准备的文章,它详细介绍了如何使用TAO(The ACE ORB)这一实现CORBA标准的开源ORB(对象请求代理)。TAO是ACE(Adaptive Communication Environment)...

    CORBA Programming with TAO

    CORBA Programming with TAO,整理自“大卫的思维空间”,内容简洁,快速入门。格式制作为CHM,方便阅读。

    glassfish-corba-source-3.1.0-b021.zip

    《Glassfish-CORBA-Source-3.1.0-b021与Fedora数据传输对象解析》 Glassfish-CORBA-Source-3.1.0-b021.zip是一个压缩包,其中包含了Glassfish服务器的一个特定版本的CORBA(Common Object Request Broker ...

    ACE-5.4+TAO-1.4+CIAO-0.4.part2.rar

    ACE 自适配通信环境(ADAPTIVE Communication Environment)是可自由使用、开放源码的面向 对象(OO)框架(framework),它实现了许多用于并发通信软件的核心模式。ACE 提供了一组丰富的可 重用 C++包装外观...

    java-11-openjdk-11.0.7.10-1.windows.redhat.x86_64.zip

    8. **JEP 320: Remove the Java EE and CORBA Modules**:移除了不再维护的Java EE和CORBA模块,使JDK更加精简。 9. **其他改进**:还包括性能优化、错误修复、新的API添加等。 Red Hat是一个知名的Linux发行版和...

    ACE-5.5.zip

    - `TAO`:可能是TAO(The ACE ORB,即ACE的ORB实现),一个CORBA(Common Object Request Broker Architecture)实现,用于分布式对象通信。 - `ACEXML`:ACE相关的XML处理库,用于解析和生成XML文档。 - `WSOCK32`...

    ACE+TAO+CIAO-5.6.tar.gz

    2. TAO项目:TAO源代码可能被组织在单独的目录下,包含ORB的核心实现、GIOP/IIOP协议处理、ORB服务、CORBA IDL编译器(如tao_idl)、以及示例和测试用例。TAO的设计使得它能够充分利用ACE提供的网络和并发性功能,...

    jdk-11.0.11_windows-x64_bin.exe

    9. **JEP 321:HTTP/2和TLS的HTTP/2客户端**:增强了HTTP/2协议支持,包括TLS的HTTP/2客户端,提升了网络性能和安全性。 10. **JEP 323:离线链接器**:这个特性允许在不联网的情况下定位并解决模块依赖问题。 **...

    ACE-5.4+TAO-1.4+CIAO-0.4.part4.rar

    ACE 自适配通信环境(ADAPTIVE Communication Environment)是可自由使用、开放源码的面向 对象(OO)框架(framework),它实现了许多用于并发通信软件的核心模式。ACE 提供了一组丰富的可 重用 C++包装外观...

    axis2相关的jar包

    axis2-corba-1.5.4.jar axis2-fastinfoset-1.5.4.jar axis2-java2wsdl-1.5.4.jar axis2-jaxbri-1.5.4.jar axis2-jaxws-1.5.4.jar axis2-jibx-1.5.4.jar axis2-json-1.5.4.jar axis2-kernel-1.5.4.jar axis2-metadata...

    axis2相关jar包~eclipse支持插件包

    axis2-corba-1.5.4.jar axis2-fastinfoset-1.5.4.jar axis2-java2wsdl-1.5.4.jar axis2-jaxbri-1.5.4.jar axis2-jaxws-1.5.4.jar axis2-jibx-1.5.4.jar axis2-json-1.5.4.jar axis2-kernel-1.5.4.jar axis2-metadata...

    ACE-5.4+TAO-1.4+CIAO-0.4.part3.rar

    ACE 自适配通信环境(ADAPTIVE Communication Environment)是可自由使用、开放源码的面向 对象(OO)框架(framework),它实现了许多用于并发通信软件的核心模式。ACE 提供了一组丰富的可 重用 C++包装外观...

    AXIS2实现webservice jar包

    axis2-corba-1.7.4.jar axis2-fastinfoset-1.7.4.jar axis2-java2wsdl-1.7.4.jar axis2-jaxbri-1.7.4.jar axis2-jaxws-1.7.4.jar axis2-jibx-1.7.4.jar axis2-json-1.7.4.jar axis2-kernel-1.7.4.jar axis2-metadata...

    jdk-11.0.13_windows-x64_bin.zip

    2. **HTTP客户端API(JEP 321)**: JDK 11包含了新的`java.net.http`包,提供了一个内置的高性能HTTP/2客户端,支持异步和同步操作,简化了网络编程。 3. **动态类型语言支持(JEP 335)**: 通过在Java虚拟机(JVM...

    ACE-5.4+TAO-1.4+CIAO-0.4.part1.rar

    ACE 自适配通信环境(ADAPTIVE Communication Environment)是可自由使用、开放源码的面向 对象(OO)框架(framework),它实现了许多用于并发通信软件的核心模式。ACE 提供了一组丰富的可 重用 C++包装外观...

    ACE+TAO-6.5.6.zip

    TAO使用ACE提供的框架结构对象与模式实现的针对高效与实时系统的CORBA应用。 ACE是一个大型的中间件产品,代码20万行左右,过于宏大,一堆的设计模式,架构了一层又一层,使用的时候, 要根据情况,看你从那一层...

    ACE源码_ACE+TAO-6.3.0.tar.gz

    TAO(The ACE ORB)是基于ACE的CORBA(Common Object Request Broker Architecture)实现,它提供了面向对象的服务,使得不同系统间能够通过网络进行通信和互操作。 ACE库的核心特性包括: 1. **网络编程支持**:...

    jdk-11.0.12_windows-x64_bin.zip

    2. **模块系统增强**:Jigsaw模块系统在Java 9中引入,Java 11对其进行了优化,提高了模块化应用程序的稳定性和性能。 3. **动态类文件常量**:新增了对动态类文件常量的支持,允许在运行时创建常量,这对框架和库...

    jdk-11.0.22-windows-x64

    2. **JDK组件**: - **javac**: Java编译器,将源代码编译成可执行的字节码。 - **javadoc**: 用于生成API文档的工具。 - **jar**: 用于创建、管理和提取Java归档(JAR)文件的工具。 - **jdb**: Java调试器,...

Global site tag (gtag.js) - Google Analytics