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/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.
If using perfect hashing, TAO_IDL needs gperf to be built on the host.
That's the default on many platforms. First, build gperf
in the ACE_wrappers/apps/gperf/src/
directory. Then, add
a symlink or copy to the bin/
directory for the
target.
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 and set it to the compiler
you want to use. 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\bin
is listed in the Executable
Directories in Tools|Options. This is needed if using the TAO_IDL
compiler under MSVC. If you intend to also use the release version of the
libraries, also add ACE_wrappers\bin\Release
to the directories.
Note: The order that these are listed is important. If your
main development is with the debug versions, make sure \bin is before
\bin\Release, otherwise put the \bin\Release first. Because the output names
for the release and debug versions of TAO_IDL are the same, extra care must be
taken when both versions are generated simulataneously.
tao\TAO.dsw
and build the TAO
library.
performance-tests\Cubit\TAO\IDL_Cubit\IDL_Cubit.dsw
and build both client and server.
TAOACE.dsw is a Visual C++ 5.0/6.0 workspace that loads the projects ACE, TAO, TAO_IDL (the compiler), orbsvcs, gperf 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 $(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.
Several of TAO's tests and examples contain perl scripts that automate the execution of these tests. The scripts are found as "run_test.pl" in the directory of the test.
The versions of perl that we use are 5.005_02 on NT and 5.003 on Solaris. The scripts may work on earlier versions of perl, but we cannot say for sure that they do.
TAO will use native exceptions if TAO_HAS_EXCEPTIONS is defined when it is
compiled. This can be accomplished in two ways: by defining ACE_HAS_EXCEPTIONS
in the config.h or config-*.h files (such as on Windows) or by using
make exceptions=1
when you compile TAO.
Take note though, that this only enables support in ACE/TAO, the correct compiler flags must also be given to the compiler to enable them.
Back to the TAO home page.