TAO can be obtained electronically via the WWW and ftp. ACE is bundled with the TAO release. You'll always need the most recent version of ACE because TAO tracks changes to ACE very closely.
For users who have used ACE with other ORBs, linking TAO with a version of ACE that is also linked against another ORB vendor's library, e.g., liborbix.so, will produce undefined and most likely unpredictable and erroneous results.
ACE_ROOT
environment variable as outlined in
the ACE
installation notes.
$ACE_ROOT
.
$ACE_ROOT/ace
and execute
make
.
TAO_ROOT
environment variable to
$ACE_ROOT/TAO
.
$TAO_ROOT
.
$TAO_ROOT/tao
and
execute make
.$TAO_ROOT/tests
and
execute make
.
$TAO_ROOT/tests
.
make
which are known to not
work include those from Solaris 4.x and 5.x, HP-UX, the latest BSD,
etc.GNU Make can be obtained from various places in source form.
Cross-compiling TAO is not much different than building it for
self-host. The one major difference is that TAO's IDL compiler must
be built and run on the host; it's not necessary to run it on the
target. It's easiest to set this up by using a symlink (Unix) or copy
of tao_idl
(NT). By way of example, here is how I setup
my Unix (SunOS5, using g++) workspace to support cross-compilation
(for VxWorks). It assumes that the ACE+TAO distribution has been
unpacked, with TAO below ACE_wrappers. It uses the
ACE_wrappers/bin/create_ace_build script to create a shadow build
tree:
cd ACE_wrappers
bin/create_ace_build SunOS5_g++
bin/create_ace_build vxworks
cd build/vxworks/TAO
/bin/rm -r TAO_IDL
ln -s ../../SunOS5_g++/TAO/TAO_IDL
To build, first on the host, then on the target:
cd build/SunOS5_g++
export ACE_ROOT=`pwd`;
export LD_LIBRARY_PATH=`pwd`/ace:$LD_LIBRARY_PATH
(cd ace; make && cd ../tests; make && cd ../TAO; make) >
make.log 2>&1
cd ../vxworks
export ACE_ROOT=`pwd`
(cd ace; make && cd ../tests; make && cd ../TAO; make) >
make.log 2>&1
For NT host, please see the detailed instructions for building and installing ACE and TAO in ../ACE-INSTALL.html.
Please note that dynamic loading of libraries is not supported by TAO for any cross-compiled target. Therefore, dynamic service configuration of the TAO ORB is not supported.
NOTE: TAO_IDL currently needs gperf to be built on the host. It's in
the ACE_wrappers/apps/gperf/src/
directory. Then, a
symlink or copy must be added to the bin/
directory for
the target. This restriction should be removed in the near future.
TAO_IDL
on NT will look for the Microsoft Visual C++
compiler as "C:\Program Files\DevStudio\VC\bin\CL.EXE". If this
compiler is located elsewhere (or if using a different compiler)
add a variable CPP_LOCATION to your environment. This variable will
override the default.
It works best if TAO is placed in ACE_wrappers so TAO ends up in
ACE_wrappers\TAO
because the Visual C++ 5 Project files
are set up to work in this configuration. If you move it, then make
sure you change the project files to look for the include and library
files in the correct place.
ACE_wrappers\ace
is listed in the Executable
Directories in Tools|Options. This is needed if using the TAO_IDL
compiler under MSVC.
tao\TAO.dsw
and build the TAO
library.
tests\Cubit\TAO\test.dsw
and build both client
and server.
TAOACE.dsw is a Visual C++ 5 workspace that loads the projects ACE, TAO, TAO_IDL (the compiler), orbsvcs, and the Naming Service. The dependencies are set up to correctly between the projects so for example, ACE will be built automatically when TAO is built. An easy way to compile everything is to just compile the debug or release version of the Naming Service.
ACE_wrappers\TAO
if installed there).
The library files paths should include ACE_wrappers\ace
.
tao\TAO.mdp
and build the TAO
library.
tests\Cubit\TAO\test.mdp
and build both client and
server.
If you prefer #include <corba.h>
over #include
<tao/corba.h>
then you will need to change your Project Settings
to also contain the TAO/tao
directory. You'll find this in the
C/C++ settings under Input.
TAO, orbsvcs, TAO_IDL, and the Simple Test all have extra project files for static library builds. TAOACE_static.dsw contains all these projects, and is set up much like TAOACE.dsw. To use the static libraries in a project, make sure to the following settings are used in the Project Settings.
TAO_HAS_DLL=0
, ACE_HAS_DLL=0
and
__ACE_INLINE__=0
Debug Multithreaded
(or
Multithreaded
for Release)
Each IDL file generates .h, .i and .cpp files. Here is an example of adding an IDL file named foobar.idl into a VC project.
..\..\..\TAO_IDL\tao_idl $(InputName).idlNotice that your absolute path to TAO_IDL may vary.
$(InputName)S.h $(InputName)C.h $(InputName)C.i $(InputName)C.cpp $(InputName)S.i $(InputName)S.cpp $(InputName)S_T.h $(InputName)S_T.i $(InputName)S_T.cppAdd only one entry in each line.
Notice that these procedures only setup the IDL compiler to perform correctly.
P.S. If anyone knows how to set a default setting in VC so we don't need to perform these procedures every time a new project gets set up, please let us know. Thanks.
Back to the TAO home page.