### Libraries in TAO

### Overview

As part of the subsetting effort to reduce footprint of applications using TAO, we have created different libraries that house various CORBA features, such the POA and DynamicAny. This design helps minimize application footprint, only linking in features that are required. However, applications must link in the libraries they need. It is possible to load most of these libraries dynamically using the ACE Service Configurator framework, though this will not work for statically linked executables. Linking the necessary libraries with your application is therefore the most straightforward way to get the features you need.

### List of Libraries

Here we outline the list of libraries in TAO core with the list of MPC projects that can be used by the application to get all the required libraries linked into the application. The library names in table below are the ones created on UNIX based systems. Windows systems have a slightly different naming convention, e.g., the PortableServer library is named as PortableServerd.lib and PortableServerd.dll. But for the naming conventions used on different platforms, the contents of the libraries and the dependencies outlined below are the same.

List of CORE Libraries in TAO

Name of the Library | Feature | MPC project to use
--- | --- | ---
libTAO.so | All the core features for a client and server side ORB. The list includes support for IIOP, invocation framework, wait strategies for transports, leader-follower framework, thread pools and thread-per-connection framework, portable interceptors, CORBA Any's, CORBA Policy framework, CDR framework etc. | taoclient.mpb for simple clients or tao_lib_with_idl.mpb to create an application library.
libTAO_AnyTypeCode.so | Library with all the TypeCode and Any support. If you use the anytypecode base project the IDL compiler flags -Sa and -St are removed from the default idl flags. | anytypecode.mpb
libTAO_Async_IORTable.so | See libTAO_IORTable.so below for more info. This is a specialization of the TAO_IORTable that allows for AMH-compatible locator use when resolving CORBALOC references. See the INS_Locator portion of the TAO Implementation Repository as an example of use. Applications have to `#include "tao/IORTable/Async_IORTable.h"` to get the right symbols. | iortable.mpb
libTAO_BiDirGIOP.so | Support for BiDirectional GIOP as outlined by the CORBA spec. Please see $TAO_ROOT/tests/BiDirectional for a simple test case of this feature. Applications need to `#include "tao/BiDir_GIOP/BiDirGIOP.h"` within their code to get this feature. | bidir_giop.mpb
libTAO_CodecFactory.so | Support for CodecFactory as outlined by the CORBA spec. Please see $TAO_ROOT/tests/Codec for a simple test case of this feature. Applications need to `#include "tao/CodecFactory/CodecFactory.h"` within their code to get this feature. | codecfactory.mpb
libTAO_Domain.so | Support for server side skeletons for the DomainManager interface. | No base projects available
libTAO_DynamicAny.so | Support for DynamicAny. Please see $TAO_ROOT/tests/DynAny_Test for an example of how to access and use this library. Applications have to `#include "tao/DynamicAny/DynamicAny.h"` to get the right symbols. | dynamicany.mpb
libTAO_DynamicInterface.so | Support for DII and DSI invocations. Applications have to `#include "tao/DynamicInterface/Dynamic_Adapter_Impl.h"` to get the right symbols. | dynamicinterface.mpb
libTAO_EndpointPolicy.so | Support for the TAO-specific Endpoint Policy. This is used to set up constraints on endpoints placed in IORs. The endpoint policy is applied to a POAManager via the POAManagerFactory and affects all POAs associated with that manager. Examples of use are in $TAO_ROOT/tests/POA/EndpointPolicy. Applications have to `#include "tao/EndpointPolicy/EndpointPolicy.h"` to get the right symbols. | endpointpolicy.mpb
libTAO_IFR_Client.so | Support for client/stub side interfaces for InterfaceRepository applications. Applications have to `#include "tao/IFR_Client/IFR_Client_Adapter_Impl.h"` to get the right symbols. | ifr_client.mpb
libTAO_ImR_Client.so | Support for applications that want to register itself to the Implementation Repository. Applications have to `#include "tao/ImR_Client/ImR_Client.h"` to get the right symbols. | imr_client.mpb
libTAO_IORInterceptor.so | Support for IORInterceptor. The portable server library depends on the IORInterceptor library. Applications have to `#include "tao/IORInterceptor/IORInterceptor_Adapter_Factory_Impl.h"` to get the right symbols. | iorinterceptor.mpb
libTAO_IORManipulation.so | Support for IOR manipulation. The interfaces offered provide operations to create and multi-profile IOR's and other related utilities. Applications have to `#include "tao/IORManipulation/IORManip_Loader.h"` to get the right symbols. | iormanip.mpb
libTAO_IORTable.so | Any TAO server can be configured as an corbaloc agent. Such agents forward requests generated using a simple ObjectKey in a corbaloc specification to the real location of the object. In TAO we implement this feature by dynamically (or statically) adding a new Object Adapter to the ORB, that handles any sort of request. This feature is placed in this library. Applications have to `#include "tao/IORTable/IORTable.h"` to get the right symbols. | iortable.mpb
libTAO_Messaging.so | Support for AMI and CORBA policies such as RoundtripTimeout and ConnectionTimeout are placed in this library. Applications have to `#include "tao/Messaging/Messaging.h"` to get the rightsymbols. | messaging.mpb
libTAO_ObjRefTemplate.so | Support for Object Reference Template specification. The portable server library depends on this library. | objreftemplate.mpb
libTAO_PI.so | Support for Portable Interceptors. This library is automagically loaded by the ORB when the application uses the PolicyFactory or ORBInitializer . Just linking this library should be sufficient to get all the features that are required to write applications using portable interceptors. | pi.mpb
libTAO_PortableServer.so | Support for POA. This library is automagically loaded by the ORB when the application calls resolve_initial_references ("RootPOA"); Just linking this library should be sufficient to get all the features that are required to write powerful servers. | taoserver.mpb
libTAO_RTCORBA.so | Support for RTCORBA client side features. Applications are required to `#include "tao/RTCORBA/RTCORBA.h"` to get the required symbols for linking. Support in this library is complaint with RTCORBA 1.0 spec. | rt_client.mpb
libTAO_RTPortableServer.so | Support for RTCORBA server side features. Applications are required to `#include "tao/RTPortableServer/RTPortableServer.h"` to get the required symbols for linking. Support in this library is complaint with RTCORBA 1.0 spec. | rt_server.mpb
libTAO_RTScheduling.so | Support for RTCORBA 2.0 features. Applications are required to `#include "tao/RTScheduling/RTScheulding.h"` to get the required symbols for linking. Support in this library is complaint with RTCORBA 2.0 spec. | rtscheduling.mpb
libTAO_SmartProxies.so | Support for Smartproxies. | smart_proxies.mpb
libTAO_Strategies.so | Support for advanced resource options for the ORB that have been strategized into this library. Advanced resource categories include new transport protocols, additional reactors, connection purging strategies etc. Applications should `#include "tao/Strategies/advanced_resources.h"` . | strategies.mpb
libTAO_TypeCodeFactory.so | Support for TypeCodeFactory interface. | typecodefactory.mpb
libTAO_Utils.so | Helper methods for that are useful for writing portable, exception safe application code. | utils.mpb
libTAO_Valuetype.so | Support for object by value (OBV). Portable server and messaging depends on this library | valuetype.mpb
libTAO_CSD_Framework.so | Support framework for Custom Servant Dispatching (CSD) feature. The CSD_ThreadPool depends on this library | csd_framework.mpb
libTAO_CSD_ThreadPool.so | Support for ThreadPool Custom Servant Dispatching (CSD) Strategy. This library can be loaded statically or dynamically. Applications are required to `#include "tao/CSD_ThreadPool/CSD_ThreadPool.h"` for static loading and provide service configuration file for dynamic loading. | csd_threadpool.mpb
libTAO_TC.so | Support for TAO::Transport::Current - a generic fremework for aplications that need access to statistical information about the currently used Transport. See Transport::Current. This library can be loaded statically or dynamically. Applications are required to `#include "tao/TransportCurrent/Transport_Current.h"` for static loading. | tc.mpb
libTAO_TC_IIOP.so | Support for TAO::Transport::IIOP::Current - an IIOP-specific plug-in for Transport::Current. See Transport::Current. This library can be loaded statically or dynamically. Applications are required to `#include "tao/TransportCurrent/IIOP_Transport_Current.h"` for static loading. Depends on libTAO_TC.so. | tc_iiop.mpb
libTAO_Compression.so | Support for Compression. This library can be loaded statically or dynamically. Applications are required to `#include "tao/Compression/Compression.h"` for static loading. | compression.mpb
libTAO_ZlibCompressor.so | Support for Zlib Compression. This library can be loaded statically or dynamically. Applications are required to `#include "tao/Compression/zlib/ZlibCompressor.h"` for static loading. | zlibcompressor.mpb

Back to the TAO TAO documentation page.