Release Notes for OCI's Distribution of TAO 1.0a
Copyright 1999 by Object Computing, Inc.


NOTE:   These release notes are current as of TAO 1.0a which corresponds to OCI part number 010-01. The latest version of these release notes can be viewed or downloaded from OCI's web site at http://theaceorb.com/releasenotes/.

Table of Contents

  1. General Notes
    1. CD Format Notes
    2. Building Requires GNU Make
    3. Static Libraries and Debug Builds
    4. Installing on Windows NT vs. UNIX
  2. Platform-specific Notes
    1. Windows NT on Intel with Microsoft Visual C++ 5.0 and 6.0
    2. Solaris 7 (SunOS 5.7) on Intel with egcs 1.1.2
    3. Solaris 2.5.1 (SunOS 5.5.1) on SPARC with egcs 1.1.2
    4. Solaris 2.5.1 (SunOS 5.5.1) on SPARC with SunCC 4.2
    5. Solaris 2.6 (SunOS 5.6) on SPARC with egcs 1.1.2
    6. Solaris 2.6 (SunOS 5.6) on SPARC with SunCC 4.2
    7. Solaris 7 (SunOS 5.7) on SPARC with egcs 1.1.2
    8. Solaris 7 (SunOS 5.7) on SPARC with SunCC 5.0
    9. HP-UX 11.00 on PA-RISC with aCC
    10. Linux on Intel with egcs 1.1.2
  3. Quickstart for Building with TAO
    1. TAO on UNIX
    2. TAO on Win32 with Visual C++
  4. Sample Application

  1. General Notes
    1. CD Format

      This CD's format is ISO-9660 with Rock Ridge and Joliet extensions. Thus, it should be readable on nearly every Unix platform (Rock Ridge extensions) as well as NT (Joliet extensions). We mastered it using the freely-available mkhybrid tool, and recorded it using the freely-available cdrecord.

    2. GNU Make Required on Unix

      With the exception of Windows NT and Windows-like operating systems, building ACE and TAO from source code requires GNU Make. While you can use other tools to build applications using ACE & TAO, using GNU Make lets you leverage the existing build system distributed with ACE & TAO. If you need GNU Make, you can get a source distribution through http://www.ociweb.com/taodg/gnumake_manual.html as well as other places.

    3. Static Libraries and Debug Builds

      Due to size limitations, debug builds for UNIX and UNIX-like operating systems on this CD do not include static libraries. You may build static ACE, TAO, and ORB services libraries by adding static_libs=1 to the flags you supply to GNU Make and rebuilding ACE and TAO. See Building Applications with TAO for more information on how to do this yourself.

      Note: you should have at least 900 Mb of additional free space available to build only the static versions of the debuggable libraries. If you want to build both static and dynamic versions, you will need more.

    4. Installing on Windows NT vs. UNIX

      To install a Windows NT build of TAO 1.0a from CD, run setup on a Windows NT platform. Likewise, to install for a UNIX or UNIX-like platform, run setup on a UNIX or UNIX-like platform.

  2. Platform-specific Notes
    1. Windows NT on Intel with Microsoft Visual C++ 5.0 and 6.0

      ACE & TAO were compiled and tested using the following tools/OS combinations:

      Visual C++ 5.0
      Windows NT 4.0 Service Pack 3 (NT4.0SP3)
      Visual C++ 5.0 (no service packs applied)
      Visual C++ 6.0
      Windows NT 4.0 Service Pack 5 (NT4.0SP5)
      Visual C++ 6.0 (no service packs applied)

      Visual C++ defaults to using program database (.pdb) files for symbolic debugging information. The compiler embeds absolute paths to the program database files in the object (.obj) files it creates. Microsoft offers a debug format called C 7.0 compatible which embeds all symbolic information in the object files themselves. Visual C++ supports Microsoft format symbols and COFF format symbols. The debug versions of ACE and TAO on this CD-ROM were built using C7 compatibility, including both symbol formats.

      If your project uses the program database style, your project will link to C7 binaries included in this distribution. If you want to use C7 debug information exclusively (rather than program database), C7 compatible must be selected and program database de-selected in the C++ project options (compiler option /Z7), and the program database files must be disabled in the linker (/PDB:NONE).

      For a debug build, the setup program places the following DLLs and executables in %ACE_ROOT%\bin:

      • aced.dll (ACE library)
      • taod.dll (TAO library)
      • orbsvcsd.dll (ORB services library)
      • tao_idl.exe (TAO IDL to C++ compiler)
      • gperf.exe (GPERF executable)

      For a non-debug (release) build, the setup program places the following DLLs and executables in %ACE_ROOT%\bin:

      • ace.dll (ACE library)
      • tao.dll (TAO library)
      • orbsvcs.dll (ORB services library)
      • tao_idl.exe (TAO IDL to C++ compiler)
      • gperf.exe (GPERF executable)

      It is necessary to modify the Executable files paths, Include files paths, and Library files paths in the Visual C++ IDE to include various directories. This is done in the Tools > Options > Directories menu. Add the following directories to Include Files:

      • %ACE_ROOT%
      • %ACE_ROOT%\TAO
      • %ACE_ROOT%\TAO\tao
      • %ACE_ROOT%\TAO\orbsvcs
      • %ACE_ROOT%\TAO\orbsvcs\orbsvcs

      Add the following directories to Library Files:

      • %ACE_ROOT%\ace
      • %ACE_ROOT%\TAO\tao
      • %ACE_ROOT%\TAO\orbsvcs\orbsvcs

      Add the following directory to Executable Files:

      • %ACE_ROOT%\bin

      You should also add %ACE_ROOT%\bin to your PATH environment variable so the DLLs can be located by the dynamic linker at run time.

      NOTE: If you rebuild tao_idl.exe and gperf.exe using a Release configuration, they will be placed in %ACE_ROOT%\bin\Release. You should copy them after you rebuild to %ACE_ROOT%\bin. A similar situation exists for the various ORB services executables, such as %ACE_ROOT%\TAO\orbsvcs\Naming_Service\Naming_Service.exe (which will be placed after rebuilding in %ACE_ROOT%\TAO\orbsvcs\Naming_Service\Release\Naming_Service.exe if you build using a Release configuration).

      Building projects on NT using static libraries requires you to specify certain preprocessor directives. You do this inside Visual C++ by going to the C++ tab under the project settings, selecting the Preprocessor Definitions category and adding ACE_HAS_DLL=0,TAO_HAS_DLL=0,TAO_ORBSVCS_HAS_DLL=0,ACE_NO_INLINE to the preprocessor definitions. Additionally, it may be necessary to link to user32.lib and advapi32.lib.

    2. Solaris 7 (SunOS 5.7) on Intel with egcs 1.1.2

      We compiled and tested ACE & TAO with the following OS/tool combination:

      Solaris 2.7 (Intel)
      $ uname -rsv
      SunOS 5.7 Generic_106542-04
      egcs 1.1.2
      $ g++ -v
      Reading specs from EGCSDIR/lib/gcc-lib/i386-pc-solaris2.7/egcs-2.91.66/specs
      gcc version egcs-2.91.66 19990314 (egcs-1.1.2 release)
      $ g++ --print-prog-name=ld
      /usr/ccs/bin/ld
      $ g++ --print-prog-name=as
      EGCSDIR/lib/gcc-lib/i386-pc-solaris2.7/as
      Sun Linker
      $ what /usr/ccs/bin/ld
      /usr/ccs/bin/ld:
      SunOS 5.7 Generic 106951-03 February 1999
      $ /usr/ccs/bin/ld -V
      ld: Software Generation Utilities - Solaris/ELF (3.0)
      GNU Assembler (binutils 2.9.1)
      $ EGCSDIR/lib/gcc-lib/i386-pc-solaris2.7/as -V /dev/null
      GNU assembler version 2.9.1 (i386-pc-solaris2.7), using BFD version 2.9.1
      GNU Library Archiver
      $ ar -V
      GNU ar 2.9.1
      Copyright 1997 Free Software Foundation, Inc.
      This program is free software; you may redistribute it under the terms of
      the GNU General Public License. This program has absolutely no warranty.

      We used the GNU Binutils version 2.9.1 assembler and archiver rather than the standard Sun assembler (/usr/ccs/bin/as) and library archiver (/usr/ccs/bin/ar). We experienced the following problems with the standard tools:

      assembler (as--WorkShop Compilers 4.2 alpha 14 Jan 1996)
      Did not accept code for assembly via a UNIX pipe.
      archiver (ar--Software Generation Utilities (SGU) Solaris/ELF 3.0)
      Choked on long symbols names while building the static TAO library (libTAO.a).
    3. Solaris 2.5.1 (SunOS 5.5.1) on SPARC with egcs 1.1.2

      We compiled and tested ACE & TAO with the following OS/tool combination:

      Solaris 2.5.1
      $ uname -rsv
      SunOS 5.5.1 Generic_103640-19
      egcs 1.1.2
      $ g++ -v
      Reading specs from EGCSDIR/lib/gcc-lib/sparc-sun-solaris2.5.1/egcs-2.91.66/specs
      gcc version egcs-2.91.66 19990314 (egcs-1.1.2 release)
      $ g++ --print-prog-name=ld
      /usr/ccs/bin/ld
      $ g++ --print-prog-name=as
      EGCSDIR/lib/gcc-lib/sparc-sun-solaris2.5.1/egcs-2.91.66/as
      Sun Linker
      $ what /usr/ccs/bin/ld
      SunOS 5.5.1 Generic 103627-02 September 1997
      $ /usr/ccs/bin/ld -V
      ld: Software Generation Utilities - Solaris/ELF (3.0)
      Workshop 5.0a Assembler
      $ EGCSDIR/lib/gcc-lib/sparc-sun-solaris2.5.1/egcs-2.91.66/as -V
      EGCSDIR/lib/gcc-lib/sparc-sun-solaris2.5.1/egcs-2.91.66/as: WorkShop Compilers 5.0 Alpha 03/27/98 Build
      NOTE: We were unable to get ACE & TAO to compile correctly using the standard Sun Assembler (/usr/ccs/bin/as) when compiling with egcs 1.1.2. The GNU Assembler (gas) would not work, either. If you need to recompile ACE & TAO on Solaris 2.5.1 using egcs in an environment identical to ours, you will need the WorkShop assembler. We accomplished this by copying or symlinking the Workshop 5.0a assembler under the gcc-lib/platform/compiler-version directory for the compiler, though you may find alternative methods for this.

    4. Solaris 2.5.1 (SunOS 5.5.1) on SPARC with SunCC 4.2

      We compiled and tested ACE & TAO with the following OS/tool combination:

      Solaris 2.5.1
      $ uname -rsv
      SunOS 5.5.1 Generic_103640-19
      Sun CC 4.2 Compiler
      $ CC -V /dev/null
      CC: WorkShop Compilers 4.2 16 Jun 1998 C++ 4.2 patch 104631-07
      tdb_link: WorkShop Compilers 4.2 16 Jun 1998 C++ 4.2 patch 104631-07
      CC: WorkShop Compilers 4.2 16 Jun 1998 C++ 4.2 patch 104631-07
      /export/sw/SUNWspro/bin/../SC4.2/bin/c++filt: WorkShop Compilers 4.2 16 Jun 1998
      ld: Software Generation Utilities - Solaris/ELF (3.0)

    5. Solaris 2.6 (SunOS 5.6) on SPARC with egcs 1.1.2

      (NOTE: This configuration is identical to the Solaris 2.5.1 egcs build except for the OS version.)

      We compiled and tested ACE & TAO with the following OS/tool combination:

      Solaris 2.6
      $ uname -rsv
      SunOS 5.6 Generic
      $ showrev -p
      No patches are installed
      egcs 1.1.2
      $ g++ -v
      Reading specs from EGCSDIR/lib/gcc-lib/sparc-sun-solaris2.5.1/egcs-2.91.66/specs
      gcc version egcs-2.91.66 19990314 (egcs-1.1.2 release)
      $ g++ --print-prog-name=ld
      /usr/ccs/bin/ld
      $ g++ --print-prog-name=as
      EGCSDIR/lib/gcc-lib/sparc-sun-solaris2.5.1/egcs-2.91.66/as
      Sun Linker
      $ what /usr/ccs/bin/ld
      SunOS 5.5.1 Generic 103627-02 September 1997
      $ /usr/ccs/bin/ld -V
      ld: Software Generation Utilities - Solaris/ELF (3.0)
      Workshop 5.0a Assembler (see note under Solaris 2.5.1/egcs section)
      $ EGCSDIR/lib/gcc-lib/sparc-sun-solaris2.5.1/egcs-2.91.66/as -V
      EGCSDIR/lib/gcc-lib/sparc-sun-solaris2.5.1/egcs-2.91.66/as: WorkShop Compilers 5.0 Alpha 03/27/98 Build

    6. Solaris 2.6 (SunOS 5.6) on SPARC with SunCC 4.2

      (NOTE: This configuration is identical to the Solaris 2.5.1 SunCC 4.2 build except for the OS version.)

      We compiled and tested ACE & TAO with the following OS/tool combination:

      Solaris 2.6
      $ uname -rsv
      SunOS 5.6 Generic
      $ showrev -p
      No patches are installed
      Sun CC 4.2 Compiler
      $ CC -V /dev/null
      CC: WorkShop Compilers 4.2 16 Jun 1998 C++ 4.2 patch 104631-07
      tdb_link: WorkShop Compilers 4.2 16 Jun 1998 C++ 4.2 patch 104631-07
      CC: WorkShop Compilers 4.2 16 Jun 1998 C++ 4.2 patch 104631-07
      /export/sw/SUNWspro/bin/../SC4.2/bin/c++filt: WorkShop Compilers 4.2 16 Jun 1998
      ld: Software Generation Utilities - Solaris/ELF (3.0)

    7. Solaris 7 (SunOS 5.7) on SPARC with egcs 1.1.2

      (NOTE: This configuration is identical to the Solaris 2.5.1 egcs build except for the OS version.)

      We compiled and tested ACE & TAO with the following OS/tool combination:

      Solaris 2.7
      $ uname -rsv
      SunOS 5.7 Generic_106541-04
      egcs 1.1.2
      $ g++ -v
      Reading specs from EGCSDIR/lib/gcc-lib/sparc-sun-solaris2.5.1/egcs-2.91.66/specs
      gcc version egcs-2.91.66 19990314 (egcs-1.1.2 release)
      $ g++ --print-prog-name=ld
      /usr/ccs/bin/ld
      $ g++ --print-prog-name=as
      EGCSDIR/lib/gcc-lib/sparc-sun-solaris2.5.1/egcs-2.91.66/as
      Sun Linker
      $ what /usr/ccs/bin/ld
      SunOS 5.5.1 Generic 103627-02 September 1997
      $ /usr/ccs/bin/ld -V
      ld: Software Generation Utilities - Solaris/ELF (3.0)
      Workshop 5.0a Assembler (see note under Solaris 2.5.1/egcs section)
      $ EGCSDIR/lib/gcc-lib/sparc-sun-solaris2.5.1/egcs-2.91.66/as -V
      EGCSDIR/lib/gcc-lib/sparc-sun-solaris2.5.1/egcs-2.91.66/as: WorkShop Compilers 5.0 Alpha 03/27/98 Build

    8. Solaris 7 (SunOS 5.7) on SPARC with SunCC 5.0

      We compiled and tested ACE & TAO with the following OS/tool combination:

      Solaris 2.7
      The following patches were applied prior to building TAO:
      • 107311-05 -- C++ Compiler Patch
      • 107357-03 -- Common Compiler Patch
      • 106327-05 -- Sun OS 5.7 Shared Library Patch

      $ uname -rsv
      SunOS 5.7 Generic_106541-04
      Sun CC 5.0 Compiler
      Problems with this compiler caused builds with debug off to have missing symbols for some template instantiations. Thus, only builds with debug turned on are included here.

      $ CC -V /dev/null
      CC: WorkShop Compilers 5.0 98/12/15 C++ 5.0
      cdr_link: WorkShop Compilers 5.0 99/07/26 C++ 5.0 Patch 107311-05
      CC: WorkShop Compilers 5.0 98/12/15 C++ 5.0
      /usr/SUNWspro/bin/../SC5.0/bin/c++filt: WorkShop Compilers 5.0 99/07/26 C++ 5.0 Patch 107311-05
      ld: Software Generation Utilities - Solaris/ELF (3.0)

    9. HP-UX 11.00 on PA-RISC with aCC

      Important
      Installation
      Tip!
        This CD uses ISO-9660 with Rock Ridge extensions, a format which HP's native mount is unable to grok. To mount this CD on HP-UX systems, you will need to use the pfs_mount command instead of the the usual mount command. However, in order to successfully run pfs_mount, both the pfs_mountd and pfsd daemons must be running. So, to mount the CD, execute commands similar to the following as user root:
      # pfs_mountd &
      # pfsd &
      # pfs_mount /dev/dsk/c1t2d0 /mnt
      See related manual pages (section 1m) for pfs_mount, pfs_mountd, and pfsd for more information.

      You will have to kill both pfsd and pfs_mountd processes in order to eject the CD.

      We compiled and tested ACE & TAO with the following OS/tool combination:

      HP-UX 11.0 (32 bit version)
      $ uname -rsv
      HP-UX B.11.00 U
      HP aCC Compiler

      $ aCC -V /dev/null
      aCC: HP ANSI C++ B3910B A.03.13
      92453-07 linker command s800.sgs ld PA64 B.11.00 REL 980519
      Some additional notes about the HP-UX distribution:
      • Although we built ACE and TAO using the 32 bit version of the operating system, the libraries and executables should also work on the 64 bit version of the operating system.
      • The aCC compiler cannot compile $TAO_ROOT/orbsvcs/orbsvcs/Trader.cpp with debugging enabled. Therefore, we compiled a non-debug version of Trader.o to use in building the debug version of the ORB services library for HP-UX on this CD-ROM. The problem did not affect any other files; all were successfully compiled with debug symbols. This will have no impact unless you are debugging the Trader, A/V Streams, and Life Cycle services.
      • The standard HP-UX 11 (B.11.00) archive utility ar(1) (PA64 B.11.00 REL 980312) fails when creating static libraries due to an inability to process long symbol names in certain TAO object files. Instead, we used the GNU ar distributed with GNU Binutils version 2.9.1 to build the libraries. We did this by passing the option AR=<path to ar> to make when building all of ACE and TAO. For example, we would use the following command if GNU ar is installed in the default location
        $ make AR=/usr/local/bin/ar
      • TAO applications that rely on shared libraries must have the variable SHLIB_PATH defined in their environment to include the directory containing TAO and ACE shared libraries (e.g., $ACE_ROOT/ace). The SHLIB_PATH environment variable is analogous to LD_LIBRARY_PATH used in other UNIX-based distributions on this CD-ROM. This environment variable need not be set at link-time, as the makefiles pass the -L option to the linker.

    10. Linux on Intel with egcs 1.1.2

      We compiled and tested ACE & TAO with the following OS/tool combination:

      Redhat Linux 6.0
      $ uname -rsv
      Linux 2.2.5-15 #1 Mon Apr 19 23:00:46 EDT 1999
      egcs 1.1.2 (standard compiler installed with RH 6.0)
      $ g++ -v
      Reading specs from /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/specs
      gcc version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release)
      $ g++ --print-prog-name=ld
      ld
      $ g++ --print-prog-name=as
      as
      $ ld -v
      GNU ld version 2.9.1 (with BFD 2.9.1.0.23)
      $ as -v /dev/null
      GNU assembler version 2.9.1 (i386-redhat-linux), using BFD version 2.9.1.0.23

      Although we built ACE & TAO on Red Hat Linux 6.0, they should be compatible with any version of Linux (kernel version 2.0 or greater) which has libc 6 (a.k.a., glibc 2). CAVEAT: The Linux builds on this CD have not been tested on any version of Linux other than Red Hat 6.0.

  3. Quickstart for Building with TAO

    This section contains a few things you will need to know to build applications which use the TAO and ACE libraries distributed on this CD. You can find more detailed information in bldgapps.html, which is adapted from Chapter 4 of the TAO Developer's Guide (OCI part number 500-01). The Guide can be purchased through http://www.ociweb.com/products/tao/purchase.html.

    1. TAO on UNIX

      On UNIX and UNIX-like systems, you should use GNU Make to build applications with TAO. The document bldgapps.html shows several sample Makefiles.

      Briefly, you will need to set the following environment variables:

      ACE_ROOT
      The base of your ACE and TAO installation
      TAO_ROOT
      $ACE_ROOT/TAO
      LD_LIBRARY_PATH
      Must include $ACE_ROOT/ace
      MAKEFLAGS
      Contains flags such as "debug=0" and "exceptions=1" and should normally match the settings for your installation.

      For example, assuming the base of your installation of TAO is in /usr/local/ACE_wrappers, and assuming you are using the C-shell (csh):

      setenv ACE_ROOT /usr/local/ACE_wrappers
      setenv TAO_ROOT $ACE_ROOT/TAO
      setenv LD_LIBRARY_PATH $ACE_ROOT/ace:$LD_LIBRARY_PATH
      setenv MAKEFLAGS "debug=0 exceptions=1"
      Note: On HP-UX (32-bit systems), use SHLIB_PATH rather than LD_LIBRARY_PATH.

    2. TAO on Win32 with Visual C++

      The document bldgapps.html details project file settings. Briefly, you will need to:

      • Modify Visual C++ option settings to specify the directory locations of ACE and TAO header files and libraries;
      • Modify the default compiler settings to use multi-threaded DLLs;
      • Modify the Input Object/Library modules to use the debug or release versions of the ACE, TAO, and orbsvcs libraries, as appropriate for your development environment;
      • Set up a custom build configuration to invoke the TAO IDL compiler to generate C++ header and source files from OMG IDL files.

      See bldgapps.html for more information.

  4. Sample Application

    The CD includes a sample application which you can build and run to verify that your installation of TAO was successful. The application consists of a simple time server and client. The client invokes an operation on a Time object in the server to get the current time in GMT.

    Source code for this application is found on the CD in the file example.tgz. We have also included a Makefile for building the application on UNIX and UNIX-like systems, and a Visual C++ 5.0 project file for building it on Windows NT.

    On UNIX and UNIX-like platforms, use gunzip and tar to uncompress and unpack this file. Then, run make in the example directory to build the server and client. You can then run the server and client.

    On Windows NT, use WinZip to unpack the file. You will find a Visual C++ workspace called TimeOfDay in the example\VC++5 subdirectory which you can use to compile the interfaces and build the server and client programs.

    The server creates a Time object and prints its IOR as a string to stdout, then waits for client requests. The client takes the IOR string as a parameter and invokes a request on the Time object, then prints the time (in GMT) to stdout.

    Here is sample output from running the server and client on Linux:

    $ server &
    [3] 30821
    IOR:010000000d00000049444c3a54696d653a312e300000000001000000000000006c00000001
    0101000f000000746f7474656e2e6f63692e636f6d0000ab0500001b00000014010f00525354de
    9ecd37cf5a02000000000001000000010000000002000000000000000800000001000000004f41
    54010000001400000001f5864001000100000000000901010000000000

    $ client <ior-from-printed-by-server>
    Time in Greenwich is 21:47:19

EMail TAO Support at taosupport
Last modified: Wed May 29 10:44:18 GMT 2002