### 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_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_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_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_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_PortableServer.so | Support for POA. This library is automagically loaded by the ORB when the application calls resolve_intial_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

Back to the TAO TAO documentation page.