CORBA Programming with TAO - 2.Compile Source Code(编译ACE/TAO/CIAO)
摘要:
简要介绍如何在Windows平台上编译ACE/TAO/CIAO,及编译过程中需注意的问题。
正文:
随着ACE/TAO/CIAO研究者研究的不断深入,整个平台变得越来越庞大,涉及的工程及目录数目也越来越多,下面简要介绍一下如何在Windows平台上编译ACE/TAO/CIAO,其过程在其它平台上是类似的。
一、目录结构
在开始之前,先简要介绍一下整个产品的目录结构。ACE(Adaptive Communication Environment)是整个ACE/TAO/CIAO体系的基础,由操作系统适配层、对并发/进程间通信/虚拟内存管理等的OO封装、ACE框架、网络服务组件等几个部分组成;而TAO(The ACE ORB)则是在ACE基础上建立起来的一个CORBA ORB实现;CIAO(Component Integrated ACE ORB)则是在TAO基础上的一个CORBA Component Model实现,同时CIAO也是目前相对比较成熟的一个CCM实现。
正是由于三者之间的上述关系,在目录结构上整个源码包也采用了类似下面的结构:
ACE_ROOT
├─ace
├─docs
├─...
├─TAO
│ ├─tao
│ ├─docs
│ ├─orbsvcs(TAO实现的众多CORBA服务被放置在这个目录下)
│ ├─...
│ ├─CIAO
│ │ ├─ciao
│ │ ├─docs
│ │ ├─DAnCE
│ │ ├─RACE
│ │ ├─...
三个产品的帮助文档,可以在相应节点下的docs目录中找到,其中除了对相应产品特定模块或服务的说明外,还包括一些不错的Tutorial,对于我们理解相应产品很有帮助(ACE/TAO/CIAO的较完整的文档是收费的,这些随源码发布的文档虽然少,但仍颇为有用)。
二、关于编译器
可以使用VC6/7.1/8来编译ACE/TAO/CIAO,不推荐使用VC7,但由于VC6的Project 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/USAGE或http://downloads.ociweb.com/MPC/MakeProjectCreator.pdf)。
对mwc.pl的工作原理有了基本的了解后,就可以运行mwc.pl生成工程文件了。执行mwc.pl的办法很简单,如要生成使用CIAO的基本工程,可以在%CIAO_ROOT%下运行:
mwc.pl -type vc8 CIAO_TAO.mwc
上述命令将产生一个名为CIAO_TAO.sln的Solution文件,有了.sln文件,就可以正式进行编译了。
应用TAO进行CORBA应用开发,下面的几个工程是必须的:
· TAO_IDL_EXE(即tao_idl,也就是我们的idl编译器,自然少不了,并且后续工程也需要用到该编译器。该工程依赖于ACE、TAO_IDL_BE、TAO_IDL_FE、gperf等多个工程,编译TAO_IDL_EXE是会自动先编译这几个工程)
· PortableServer(即POA库,编写CORBA应用程序哪能离得开POA,该工程依赖于ACE、TAO、CodeSet、AnyTypeCode等工程)
· Naming_Service(即命名服务,这是对于我们开发CORBA应用相当有用的一个基本服务,该工程依赖的其它工程就更多了,就不再一一列举了)
而要使用CIAO,则还必须编译%CIAO_ROOT%/DAnCE下的多个工程,这些工程包括:
· ExecutionManager
· NodeManager
· Plan_Launcher
· NodeApplication
这几个工程是部署与配置引擎(Deployment And Configuration Engine,DAnCE)的一部分,负责处理面向组件的应用的部署与配置。
由于工程之间存在的复杂依赖关系,你只需编译最后这三个工程,就可以自动完成约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,由于没有ATL及MFC,在编译时会遇到一些麻烦,可以在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
相关推荐
./configure --prefix=/path/to/install --with-tao --with-log-support ``` 2. 编译: 使用`make`命令开始编译过程,这可能会花费一些时间: ```bash make -j 4 ``` `-j 4`参数表示使用4个线程并行编译,...
《CORBA Programming with TAO》是一篇专门为CORBA编程初学者准备的文章,它详细介绍了如何使用TAO(The ACE ORB)这一实现CORBA标准的开源ORB(对象请求代理)。TAO是ACE(Adaptive Communication Environment)...
CORBA Programming with TAO,整理自“大卫的思维空间”,内容简洁,快速入门。格式制作为CHM,方便阅读。
《Glassfish-CORBA-Source-3.1.0-b021与Fedora数据传输对象解析》 Glassfish-CORBA-Source-3.1.0-b021.zip是一个压缩包,其中包含了Glassfish服务器的一个特定版本的CORBA(Common Object Request Broker ...
ACE 自适配通信环境(ADAPTIVE Communication Environment)是可自由使用、开放源码的面向 对象(OO)框架(framework),它实现了许多用于并发通信软件的核心模式。ACE 提供了一组丰富的可 重用 C++包装外观...
8. **JEP 320: Remove the Java EE and CORBA Modules**:移除了不再维护的Java EE和CORBA模块,使JDK更加精简。 9. **其他改进**:还包括性能优化、错误修复、新的API添加等。 Red Hat是一个知名的Linux发行版和...
- `TAO`:可能是TAO(The ACE ORB,即ACE的ORB实现),一个CORBA(Common Object Request Broker Architecture)实现,用于分布式对象通信。 - `ACEXML`:ACE相关的XML处理库,用于解析和生成XML文档。 - `WSOCK32`...
2. TAO项目:TAO源代码可能被组织在单独的目录下,包含ORB的核心实现、GIOP/IIOP协议处理、ORB服务、CORBA IDL编译器(如tao_idl)、以及示例和测试用例。TAO的设计使得它能够充分利用ACE提供的网络和并发性功能,...
9. **JEP 321:HTTP/2和TLS的HTTP/2客户端**:增强了HTTP/2协议支持,包括TLS的HTTP/2客户端,提升了网络性能和安全性。 10. **JEP 323:离线链接器**:这个特性允许在不联网的情况下定位并解决模块依赖问题。 **...
ACE 自适配通信环境(ADAPTIVE Communication Environment)是可自由使用、开放源码的面向 对象(OO)框架(framework),它实现了许多用于并发通信软件的核心模式。ACE 提供了一组丰富的可 重用 C++包装外观...
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-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 自适配通信环境(ADAPTIVE Communication Environment)是可自由使用、开放源码的面向 对象(OO)框架(framework),它实现了许多用于并发通信软件的核心模式。ACE 提供了一组丰富的可 重用 C++包装外观...
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...
2. **HTTP客户端API(JEP 321)**: JDK 11包含了新的`java.net.http`包,提供了一个内置的高性能HTTP/2客户端,支持异步和同步操作,简化了网络编程。 3. **动态类型语言支持(JEP 335)**: 通过在Java虚拟机(JVM...
ACE 自适配通信环境(ADAPTIVE Communication Environment)是可自由使用、开放源码的面向 对象(OO)框架(framework),它实现了许多用于并发通信软件的核心模式。ACE 提供了一组丰富的可 重用 C++包装外观...
TAO使用ACE提供的框架结构对象与模式实现的针对高效与实时系统的CORBA应用。 ACE是一个大型的中间件产品,代码20万行左右,过于宏大,一堆的设计模式,架构了一层又一层,使用的时候, 要根据情况,看你从那一层...
TAO(The ACE ORB)是基于ACE的CORBA(Common Object Request Broker Architecture)实现,它提供了面向对象的服务,使得不同系统间能够通过网络进行通信和互操作。 ACE库的核心特性包括: 1. **网络编程支持**:...
2. **模块系统增强**:Jigsaw模块系统在Java 9中引入,Java 11对其进行了优化,提高了模块化应用程序的稳定性和性能。 3. **动态类文件常量**:新增了对动态类文件常量的支持,允许在运行时创建常量,这对框架和库...
2. **JDK组件**: - **javac**: Java编译器,将源代码编译成可执行的字节码。 - **javadoc**: 用于生成API文档的工具。 - **jar**: 用于创建、管理和提取Java归档(JAR)文件的工具。 - **jdb**: Java调试器,...