diff options
author | nanbor <nanbor@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1998-06-26 16:26:40 +0000 |
---|---|---|
committer | nanbor <nanbor@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1998-06-26 16:26:40 +0000 |
commit | ff67d1e4a44795bdc48203dc60177f4ffaf9ec15 (patch) | |
tree | 926c29b9b943197b8c48ae227c3bdbe60d29d60e /ACE-INSTALL.html | |
parent | a9971f5f00b0f51f63fab0a0fd0a8425b64a600c (diff) | |
download | ATCD-ff67d1e4a44795bdc48203dc60177f4ffaf9ec15.tar.gz |
Added more info for {Free,Net}BSD.
Diffstat (limited to 'ACE-INSTALL.html')
-rw-r--r-- | ACE-INSTALL.html | 1503 |
1 files changed, 761 insertions, 742 deletions
diff --git a/ACE-INSTALL.html b/ACE-INSTALL.html index e29edc82dfa..98ed7836a98 100644 --- a/ACE-INSTALL.html +++ b/ACE-INSTALL.html @@ -2,8 +2,8 @@ <!-- $Id$ --> <HEAD> - <TITLE>Building and Installing ACE and Its Network Services</TITLE> - <link rev=made href="mailto:schmidt@cs.wustl.edu"> +<TITLE>Building and Installing ACE and Its Network Services</TITLE> +<link rev=made href="mailto:schmidt@cs.wustl.edu"> </HEAD> <BODY text = "#000000" @@ -26,12 +26,12 @@ HREF="ACE.FAQ.html">FAQ</A> before building and installing ACE. <H4>Document Index</H4> <UL> -<LI><A HREF="#platforms">Supported Platforms and Compilers</A> -<LI><A HREF="#installnotes">Installation Notes for Supported Platforms</A> -<LI><A HREF="#g++">Compiling ACE with GNU g++</A> -<LI><A HREF="#aceinstall">Building and Installing ACE</A> -<LI><A HREF="#svcsinstall">Building and Installing ACE Network Services</A> -<LI><A HREF="#advanced">Advanced Topics</A> + <LI><A HREF="#platforms">Supported Platforms and Compilers</A> + <LI><A HREF="#installnotes">Installation Notes for Supported Platforms</A> + <LI><A HREF="#g++">Compiling ACE with GNU g++</A> + <LI><A HREF="#aceinstall">Building and Installing ACE</A> + <LI><A HREF="#svcsinstall">Building and Installing ACE Network Services</A> + <LI><A HREF="#advanced">Advanced Topics</A> </UL> <P><HR><P> @@ -55,32 +55,28 @@ mailing list</A> and we'll try to fix it for you. is known to support well.<P> <table width="100%" border=1> - <tr valign=top> - <td><b>Fully supported, i.e., continually tested and used daily</b></td> - <td>Solaris 2.5, Windows NT (MSVC++ 4.x and 5.0), - DEC Alpha Windows NT (MSVC++ 5.0), Linux/Intel, - Linux/Alpha, VxWorks, LynxOS, Digital UNIX 4.0, - HP/UX, AIX - </td> - </tr> - <tr valign=top bgcolor="#AFAFAF"> - <td><b>Nearly fully supported, i.e., periodically tested</b></td> - <td>Solaris 2.6, Windows 95, Windows CE, IRIX 6.x, MVS - </td> - </tr> - <tr valign=top> - <td><b>Partially supported, i.e., infrequently tested</b></td> - <td> - PSoS, Tandem, Chorus, SCO, UnixWare, SunOS 4.x, - FreeBSD, NetBSD - </td> - </tr> - <tr valign=top bgcolor="#AFAFAF"> - <td><b>Planned support, i.e., pending</b></td> - <td> - Windows CE - </td> - </tr> + <tr valign=top> + <td><b>Fully supported, i.e., continually tested and used daily</b></td> + <td>Solaris 2.5, Windows NT (MSVC++ 4.x and 5.0), + DEC Alpha Windows NT (MSVC++ 5.0), Linux/Intel, + Linux/Alpha, VxWorks, LynxOS, Digital UNIX 4.0, + HP/UX, AIX + </td> + </tr> + <tr valign=top bgcolor="#AFAFAF"> + <td><b>Nearly fully supported, i.e., periodically tested</b></td> + <td>Solaris 2.6, Windows 95, Windows CE, IRIX 6.x, MVS + </td> + </tr> + <tr valign=top> + <td><b>Partially supported, i.e., infrequently tested</b></td> + <td> PSoS, Tandem, Chorus, SCO, UnixWare, SunOS 4.x, FreeBSD, NetBSD + </td> + </tr> + <tr valign=top bgcolor="#AFAFAF"> + <td><b>Planned support, i.e., pending</b></td> + <td> Windows CE </td> + </tr> </table> <P>In general, any UNIX/POSIX variation is a potential target platform @@ -90,283 +86,306 @@ for ACE. Ideally, ACE will compile on any POSIX conforming OS. <H3><A NAME="installnotes">Installation Notes for Supported Platforms</A></H3> <UL> -<LI> <B>Win32 (Windows NT/i386, NT/Alpha and Windows '95) </B><P> - -All of ACE has been ported to the Win32 API (which includes Windows NT -and Windows '95). The entire release now compiles using the Microsoft -Visual C++ 4.x and 5.0 compilers (the 2.0 compiler may also work, but -we haven't tested it recently). ACE can be built as both a static and -dynamic library, using the Win32 installation process described -below.<P> - -<li> <b>Windows CE</b><p> - -Most of ACE has been ported to Windows CE using Visual C++ 5.0 with CE - Toolkit. ACE has been tested on x86 Emulator and an HP 360LX - with an SH series CPU. Please be sure to read this file (<a - href="CE-status.txt">CE-status.txt</a>) for - up-to-date information about ACE on CE. ACE can only be built as - DLL library now. - -<LI> <B> Sun OS 5.x/4.x (a.k.a. Solaris 2.x/1.x) using Sun CC 3.0.1, Sun - C++ 4.0.x, Centerline C++ 2.x, and GNU gcc 2.7.x. </B> <P> - -All the source code and tests should build and run without - any problems on the Solaris and SunOS platforms using the - Sun C++ compilers.<P> - -<LI> <B> Sun OS 4.1.x using Centerline C++ 2.x, Sun CC 3.x, and Lucid - Energize 3.2. </B> <P> - -Note that shared libraries do not interact very well with - Centerline C++ or Sun C++ on SunOS 4.1.x. This is due to - odd behavior of the SunOS 4.1.x linker, which (1) does not - properly call constructors of global objects within shared - libraries and (2) does not call the init() and fini() - functions in shared libraries, even though the manual claims - that these functions are called! In particular, this means - that the tests in the directory - $(ACE_ROOT)/tests/Service_Configurator/IPC-tests/server/ - will not work for statically linked services...<P> - - Some versions of SunOS 4.1.x do not contain the - /usr/lib/libnsl.a library. This library seems to be - optional since System V Transport Layer Interface (TLI) - support is optional on SunOS 4.1.x (in contrast, it's the - "preferred" transport interface on Solaris).<P> - - The best work-around for now is probably to either add a - dummy libnsl.a in /lib (which may not be feasible) or simply - comment out the line:<P> - - LIBS += -lnsl<P> - - in the <CODE>$ACE_ROOT/include/makeinclude/wrapper_macros.GNU</CODE> - file. Naturally, any programs, e.g., the TLI_SAP tests, - that use the TLI wrappers aren't going to work!<P> - - Note that on SunOS 4.x you may get warnings from the linker - that "archive has no table of contents; add one using - ranlib(1)" for certain libraries, e.g., libASX.a, - libThreads.a, and libSPIPE.a. This occurs since SunOS 4.x - does not support these features.<P> - -<LI><B>AIX</B>P> - - The ACE port to AIX assumes that the user has installed the - AIX patch containing the dl*() APIs. To use these APIs, IBM - has created a separate product (free to AIX licensees) - called shared library hookable symbols (or slhs/6000). If - you don't have this patch, the sv* commands for compiling - and linking will not be present on the system.<P> - - If you are using AIX 4.2.1 or later, there is no patch needed; - the dynamic library APIs are included in the base operating - system.<P> - - BTW, here's a technique from Rob Jordan <<A - HREF="mailto:jordan@hursley.ibm.com">jordan@hursley.ibm.com</A>> - that can reduce the size of the ACE libraries by - about one third, and can also be applied to applications. It works - by optimising the sharing of template functions, which are created in an - ``unusual'' way under AIX. It also speeds up compilation.<P> - - Here's how to optimise the ACE library generation:<P> - - Look at the <A -HREF="http://www.cs.wustl.edu/~schmidt/ACE_wrappers/ace/Makefile">Makefile</a> - in <CODE>$ACE_ROOT/ace</CODE>. Create a file called - <CODE>ACE_All_Src.cpp</CODE>, and add a line to #include - each of the source files - listed under <CODE>FILES=</CODE> in the Makefile. Create a - file called <CODE>ACE_All_Tmp.h</CODE> - and add a line to #include each of the .h files listed under - <CODE>TEMPLATE_FILES=</CODE> in the Makefile. Now update the Makefile so that - <CODE>FILES=ACE_All_Src</CODE> and <CODE>TEMPLATE_FILES=ACE_All_Tmp</CODE>.<P> - -<LI><B>Linux</B><P> - -ACE has been ported to <A -HREF="http://www.cs.wustl.edu/~cleeland/ace/">Linux</A> on both Intel -and Alpha platforms. If you use a RedHat 5.x distribution, it's best -to use RedHat 5.1. With RedHat 5.0, you'll need some <A -HREF="os-patches/linux-patches.html">updates and possibly som -patches</A> to get ACE working with LinuxThreads. Some of the patches -are necessary with Alpha CPUs and with some older kernels. egcs 1.0.1 -can also be used, but it may need patches, described in the patches -file, as well.<P> - -<strong>NOTE:</strong> Be careful when installing egcs. If -you don't remove your old gcc and libg++ RPMs, it's best to -install egcs in a different directory than /usr, such as /usr/local, -and set your PATH and LD_LIBRARY_PATH accordingly.<p> - -Some of the ACE tests fail on older, pre-glibc-2 Linux platforms.<p> - -<LI><B>SCO UNIX</B><P> - -ACE has been ported to SCO UNIX using the GNU g++ 2.7.2 compiler. -Arturo Montes <<A -HREF="mailto:mitosys@colomsat.net.co">mitosys@colomsat.net.co</A>> -maintains this code. In addition, he also maintains a version of <A -HREF="http://www.cs.wustl.edu/~schmidt/ACE_wrappers/FSU-threads.ps.gz">FSU -pthreads</A>.<P> - -<LI><B>SGI IRIX 5.x and 6.x</B><P> - -ACE used to build fine using the SGI C++ and GNU GCC compilers for - IRIX 5.x. - It has been ported to IRIX 6.x using the SGI MipsPro 7.1 C++ - compiler; - be aware that in IRIX 6.2 there is a number of patches that - have to be installed and exceptions appear to fail with the - O32 ABI. - Please check the config files for the details.<P> - -<LI> <B> HP-UX 9.x, 10.x, and 11.00 </B> <P> - -HP sells 2 C++ compilers for HP-UX 10.x and 11.00. If you are using 9.x, - there's only the first one. -<UL> -<LI>HP C++ - this is CC, HP's cfront-based compiler. As of ACE 4.4, it - can be used, but some people have problems with templates. - Caveat emptor. It's been said that you should run version 10.24, - if not later. - -<LI>HP aC++ - this is aCC, HP's new, ANSI-to-be compiler. It handles ACE - pretty well. You should use version A.01.12 on HP-UX 10.x and - version A.03.05 on HP-UX 11.00. Also see further notes on - this platform at Riverace's - <A HREF="http://www.riverace.com/ACE/hints_hpux.html">HP-UX Hints</A> - page. - -</UL> -<P> - -<LI> <B>OSF/1 3.2 and 4.0 (a.k.a. Digital UNIX 4.0)</B> <P> - -The OSF/1 C++ 5.4 through 5.7 compilers have problems with ACE's -templates. They compile the lib and most of the test programs, -although they warn about template usage. Most tests run, some dump -core.<P> - -CXX 6.0 and 6.1 are _much_ improved in this regard: they build all of -ACE cleanly. Please note that -<code>include/makeinclude/platform_osf1_4.0.GNU</code> has a -<strong><code>WARNING_FLAGS</code></strong> macro that is disabled by -default, to support users who don't have 6.0 yet. If you do, enable -that macro definition by either adding CXX_VER=POST_5X to your gmake -invocation, or editing your include/makeinclude/platform_macros.GNU -file. All of the tests in ACE_wrappers/tests run successfully with -CXX 6.0 and CXX 6.1.<P> - -GNU gcc 2.7.2.1 compiles without problems. All tests run (besides -minor problems). Thanks to Thilo Kielmann <<A -HREF="mailto:kielmann@informatik.uni-siegen.de"> -kielmann@informatik.uni-siegen.de</A>> and David Trumble <<A -HREF="mailto:trumble@cvg.enet.dec.com">trumble@cvg.enet.dec.com</A>> -for help with this port.<P> - -<LI><B> UnixWare </B> <P> - - Steve Huston <<A HREF="mailto:shuston@riverace.com">shuston@riverace.com</A>> - has ported ACE to work with UnixWare 2.01 and g++.<P> - - Ganesh Pai <<A HREF="mailto:gpai@voicetek.com">gpai@voicetek.com</A>> - subsequently did the port for version 2.1.2, also with g++.<P> - -<LI><B>Chorus</B> <P> - - Wei Chiang <<A HREF="mailto:chiang@tele.nokia.fi">chiang@tele.nokia.fi</A>> - has ported ACE to Chorus 3.1 using GNU g++ 2.7.2.<P> - -<LI><B>LynxOS</B> <P> - - Dave Mayerhoefer <<A HREF="mailto:davem@lynx.com">davem@lynx.com</A>> - has ported ACE to LynxOS 2.5 using GNU g++ 2.7.2. However, you may need - to apply some <A HREF="os-patches/lynxos-patches.html">patches - to LynxOS</A> to get ACE working.<P> - -<LI><STRONG>VxWorks</STRONG><P> - - <A HREF="http://www.cs.wustl.edu/~levine/">David Levine</A> <<A -HREF="mailto:levine@cs.wustl.edu">levine@cs.wustl.edu</A>> has -ported ACE to VxWorks 5.2/5.3/5.3.1 with the GreenHills 1.8.8 -and g++ 2.7.2 compilers.<P> - -In addition to all of the other benefits of ACE, it helps -work around some deficiencies with VxWorks 5.3/5.3.1. -Some of these apply only with g++, at least thru version 2.7.2. -That is the version that is shipped with Tornado 1.0.1/ -VxWorks 5.3.1. The problems are:<P> -<OL> - <LI>The program entry point cannot be called ``main'' with g++. ACE - renames it to ``ace_main'' (configurable via ACE_MAIN) on VxWorks. - While this may seem trivial, it is important with legacy code. - ACE itself ran into this problem.<P> - - <LI>argc/argv isn't used with VxWorks entry points. ACE provides - a wrapper function that transparently converts shell command - line arguments to argc/argv form. See <A HREF="#spa">below</a> - for details.<P> - - <LI>Unsigned long long support is not available with the g++ that - is distributed with Tornado 1.0.1/VxWorks 5.3.1, or with - GreenHills 1.8.8. The documentation says that it is supported - by g++, but try using it :-) Wind River technical support verified - that it doesn't work. ACE provides its own 64-bit unsigned integer - type, ACE_hrtime_t, so you don't even have to worry about this - problem if you use it.<P> - - <LI>There a gory problem with munch that is severely aggravated - by the presence of a static in the Wind River/g++ iostream.h. - ACE hides this and provides an easy-to-use workaround in the - very unlikely situation where it becomes a problem. - Please see ace/config-vxworks5.2-g++.h for more information.<P> -</OL> -In addition, as noted <A HREF="#g++">below</A> following the -discussion of the g++ -fno-implicit-templates option, --fno-implicit-templates is broken. And, -O2 is not supported on some -targets.<P> - -Please note that ACE uses one of the spare fields in -the Wind River task control block, spare4, for thread- -specific storage. This field is specified in only one -place, in ace/OS.i, so it can easily be changed to one -of the other spare fields, if necessary.<P> - -Versions of ACE from 4.3.3 and beyond destroy dynamically -allocated singletons in the ACE library. But, they may not -properly destroy some static objects. If you have trouble -running a program multiple times, it may be necessary to -unload the module, using unld, and reload it between runs. -Alternatively, you could try calling <code>cplusDtors</code> -and then <code>cplusCtors</code> between runs.<P> - -<LI><B>MVS OpenEdition</B> <P> - -All of ACE has been ported to OpenEdition by Chuck Gehr <<A -HREF="mailto:gehr@sweng.stortek.com">gehr@sweng.stortek.com</A>>. -The ACE library, all the tests and most of the examples and apps build -clean. There are still some problems that need to be ironed out:<P> - - MVS does not support the dynamic linking dl...() calls that the Service - Configurator uses to dynamically link services at run time. As a result, all - the examples and apps that use a svc.conf file (for dynamically configuring - service objects) do not work, however, most of these apps can be built/run - statically. Also, the Svc_Conf_l.cpp and Svc_Conf_y.cpp files are generated - using flex and yacc on a ascii (not ebcdic) machine and as a result they don't - work very well with ebcdic svc.conf files. We should be able to regenerate - these files on MVS but MVS doesn't have flex. This is something that needs - to be done.<P> - - Some of the tests do not execute properly. This is a minority and over time - the goal is to get to 100%.<P> - - The make scheme for some of the apps still doesn't work perfectly on MVS. - This is mainly due to the way shared libraries are handled on MVS. See - <A HREF="#mvs">additional build tips for MVS</A> for more on - this.<P> + <LI> <B>Win32 (Windows NT/i386, NT/Alpha and Windows '95) </B><P> + + All of ACE has been ported to the Win32 API (which includes Windows NT + and Windows '95). The entire release now compiles using the Microsoft + Visual C++ 4.x and 5.0 compilers (the 2.0 compiler may also work, but + we haven't tested it recently). ACE can be built as both a static and + dynamic library, using the Win32 installation process described + below.<P> + + <li> <b>Windows CE</b><p> + + Most of ACE has been ported to Windows CE using Visual C++ 5.0 with CE + Toolkit. ACE has been tested on x86 Emulator and an HP 360LX + with an SH series CPU. Please be sure to read this file (<a + href="CE-status.txt">CE-status.txt</a>) for + up-to-date information about ACE on CE. ACE can only be built as + DLL library now.<p> + + <LI> <B> Sun OS 5.x/4.x (a.k.a. Solaris 2.x/1.x) using Sun CC 3.0.1, Sun + C++ 4.0.x, Centerline C++ 2.x, and GNU gcc 2.7.x. </B> <P> + + All the source code and tests should build and run without + any problems on the Solaris and SunOS platforms using the + Sun C++ compilers.<P> + + <LI> <B> Sun OS 4.1.x using Centerline C++ 2.x, Sun CC 3.x, and Lucid + Energize 3.2. </B> <P> + + Note that shared libraries do not interact very well with + Centerline C++ or Sun C++ on SunOS 4.1.x. This is due to + odd behavior of the SunOS 4.1.x linker, which (1) does not + properly call constructors of global objects within shared + libraries and (2) does not call the init() and fini() + functions in shared libraries, even though the manual claims + that these functions are called! In particular, this means + that the tests in the directory + $(ACE_ROOT)/tests/Service_Configurator/IPC-tests/server/ + will not work for statically linked services...<P> + + Some versions of SunOS 4.1.x do not contain the + /usr/lib/libnsl.a library. This library seems to be + optional since System V Transport Layer Interface (TLI) + support is optional on SunOS 4.1.x (in contrast, it's the + "preferred" transport interface on Solaris).<P> + + The best work-around for now is probably to either add a + dummy libnsl.a in /lib (which may not be feasible) or simply + comment out the line:<P> + + LIBS += -lnsl<P> + + in the <CODE>$ACE_ROOT/include/makeinclude/wrapper_macros.GNU</CODE> + file. Naturally, any programs, e.g., the TLI_SAP tests, + that use the TLI wrappers aren't going to work!<P> + + Note that on SunOS 4.x you may get warnings from the linker + that "archive has no table of contents; add one using + ranlib(1)" for certain libraries, e.g., libASX.a, + libThreads.a, and libSPIPE.a. This occurs since SunOS 4.x + does not support these features.<P> + + <LI><B>AIX</B><P> + + The ACE port to AIX assumes that the user has installed the + AIX patch containing the dl*() APIs. To use these APIs, IBM + has created a separate product (free to AIX licensees) + called shared library hookable symbols (or slhs/6000). If + you don't have this patch, the sv* commands for compiling + and linking will not be present on the system.<P> + + If you are using AIX 4.2.1 or later, there is no patch needed; + the dynamic library APIs are included in the base operating + system.<P> + + BTW, here's a technique from Rob Jordan <<A + HREF="mailto:jordan@hursley.ibm.com">jordan@hursley.ibm.com</A>> + that can reduce the size of the ACE libraries by + about one third, and can also be applied to applications. It works + by optimising the sharing of template functions, which are created in an + ``unusual'' way under AIX. It also speeds up compilation.<P> + + Here's how to optimise the ACE library generation:<P> + + Look at the <A + HREF="http://www.cs.wustl.edu/~schmidt/ACE_wrappers/ace/Makefile">Makefile</a> + in <CODE>$ACE_ROOT/ace</CODE>. Create a file called + <CODE>ACE_All_Src.cpp</CODE>, and add a line to #include + each of the source files + listed under <CODE>FILES=</CODE> in the Makefile. Create a + file called <CODE>ACE_All_Tmp.h</CODE> + and add a line to #include each of the .h files listed under + <CODE>TEMPLATE_FILES=</CODE> in the Makefile. Now update the Makefile so that + <CODE>FILES=ACE_All_Src</CODE> and <CODE>TEMPLATE_FILES=ACE_All_Tmp</CODE>.<P> + + <LI><B>Linux</B><P> + + ACE has been ported to <A + HREF="http://www.cs.wustl.edu/~cleeland/ace/">Linux</A> on both Intel + and Alpha platforms. If you use a RedHat 5.x distribution, it's best + to use RedHat 5.1. With RedHat 5.0, you'll need some <A + HREF="os-patches/linux-patches.html">updates and possibly som + patches</A> to get ACE working with LinuxThreads. Some of the patches + are necessary with Alpha CPUs and with some older kernels. egcs 1.0.1 + can also be used, but it may need patches, described in the patches + file, as well.<P> + + <strong>NOTE:</strong> Be careful when installing egcs. If + you don't remove your old gcc and libg++ RPMs, it's best to + install egcs in a different directory than /usr, such as /usr/local, + and set your PATH and LD_LIBRARY_PATH accordingly.<p> + + Some of the ACE tests fail on older, pre-glibc-2 Linux platforms.<p> + + <LI><B>SCO UNIX</B><P> + + ACE has been ported to SCO UNIX using the GNU g++ 2.7.2 compiler. + Arturo Montes <<A + HREF="mailto:mitosys@colomsat.net.co">mitosys@colomsat.net.co</A>> + maintains this code. In addition, he also maintains a version of <A + HREF="http://www.cs.wustl.edu/~schmidt/ACE_wrappers/FSU-threads.ps.gz">FSU + pthreads</A>.<P> + + <LI><B>SGI IRIX 5.x and 6.x</B><P> + + ACE used to build fine using the SGI C++ and GNU GCC compilers for + IRIX 5.x. + It has been ported to IRIX 6.x using the SGI MipsPro 7.1 C++ + compiler; + be aware that in IRIX 6.2 there is a number of patches that + have to be installed and exceptions appear to fail with the + O32 ABI. + Please check the config files for the details.<P> + + <LI> <B> HP-UX 9.x, 10.x, and 11.00 </B> <P> + + HP sells 2 C++ compilers for HP-UX 10.x and 11.00. If you are using 9.x, + there's only the first one. + <UL> + <LI>HP C++ - this is CC, HP's cfront-based compiler. As of ACE 4.4, it + can be used, but some people have problems with templates. + Caveat emptor. It's been said that you should run version 10.24, + if not later. + + <LI>HP aC++ - this is aCC, HP's new, ANSI-to-be compiler. It handles ACE + pretty well. You should use version A.01.12 on HP-UX 10.x and + version A.03.05 on HP-UX 11.00. Also see further notes on + this platform at Riverace's + <A HREF="http://www.riverace.com/ACE/hints_hpux.html">HP-UX Hints</A> + page. + + </UL> + <P> + + <LI> <B>OSF/1 3.2 and 4.0 (a.k.a. Digital UNIX 4.0)</B> <P> + + The OSF/1 C++ 5.4 through 5.7 compilers have problems with ACE's + templates. They compile the lib and most of the test programs, + although they warn about template usage. Most tests run, some dump + core.<P> + + CXX 6.0 and 6.1 are _much_ improved in this regard: they build all of + ACE cleanly. Please note that + <code>include/makeinclude/platform_osf1_4.0.GNU</code> has a + <strong><code>WARNING_FLAGS</code></strong> macro that is disabled by + default, to support users who don't have 6.0 yet. If you do, enable + that macro definition by either adding CXX_VER=POST_5X to your gmake + invocation, or editing your include/makeinclude/platform_macros.GNU + file. All of the tests in ACE_wrappers/tests run successfully with + CXX 6.0 and CXX 6.1.<P> + + GNU gcc 2.7.2.1 compiles without problems. All tests run (besides + minor problems). Thanks to Thilo Kielmann <<A + HREF="mailto:kielmann@informatik.uni-siegen.de"> + kielmann@informatik.uni-siegen.de</A>> and David Trumble <<A + HREF="mailto:trumble@cvg.enet.dec.com">trumble@cvg.enet.dec.com</A>> + for help with this port.<P> + + <li><b> FreeBSD </b><p> + + FreeBSD is a fast evolving platform. However, it has the + advantage of having standard releases. At this moment, ACE + supports both -stable (2.2.x) and -current (3.0). Threaded version of ACE is + only supported on -current. It might just work for -stable but + we never tried that. <p> + + Notice that on FreeBSD, <code>ld.so</code> only looks for so + libraries with <b>version number</b> appended. ACE makefiles + create symlink for most libraries they generate to + <code>$ACE_ROOT/ace</code> with appropriate ACE version. + However, this does not work for libACE.so itself so you have to + create it manually (If you figure out how to do this, please + let us know) like this: <p> + + <code>ln -sf $ACE_ROOT/ace/libACE.so $ACE_ROOT/ace/libACE.so.4.5</code><p> + + <li><b>NetBSD</b><p> + + Like FreeBSD, NetBSD's <code>ld.so</code> also requires + versioned .so files. + + <LI><B> UnixWare </B> <P> + + Steve Huston <<A HREF="mailto:shuston@riverace.com">shuston@riverace.com</A>> + has ported ACE to work with UnixWare 2.01 and g++.<P> + + Ganesh Pai <<A HREF="mailto:gpai@voicetek.com">gpai@voicetek.com</A>> + subsequently did the port for version 2.1.2, also with g++.<P> + + <LI><B>Chorus</B> <P> + + Wei Chiang <<A HREF="mailto:chiang@tele.nokia.fi">chiang@tele.nokia.fi</A>> + has ported ACE to Chorus 3.1 using GNU g++ 2.7.2.<P> + + <LI><B>LynxOS</B> <P> + + Dave Mayerhoefer <<A HREF="mailto:davem@lynx.com">davem@lynx.com</A>> + has ported ACE to LynxOS 2.5 using GNU g++ 2.7.2. However, you may need + to apply some <A HREF="os-patches/lynxos-patches.html">patches + to LynxOS</A> to get ACE working.<P> + + <LI><STRONG>VxWorks</STRONG><P> + + <A HREF="http://www.cs.wustl.edu/~levine/">David Levine</A> <<A + HREF="mailto:levine@cs.wustl.edu">levine@cs.wustl.edu</A>> has + ported ACE to VxWorks 5.2/5.3/5.3.1 with the GreenHills 1.8.8 + and g++ 2.7.2 compilers.<P> + + In addition to all of the other benefits of ACE, it helps + work around some deficiencies with VxWorks 5.3/5.3.1. + Some of these apply only with g++, at least thru version 2.7.2. + That is the version that is shipped with Tornado 1.0.1/ + VxWorks 5.3.1. The problems are:<P> + <OL> + <LI>The program entry point cannot be called ``main'' with g++. ACE + renames it to ``ace_main'' (configurable via ACE_MAIN) on VxWorks. + While this may seem trivial, it is important with legacy code. + ACE itself ran into this problem.<P> + + <LI>argc/argv isn't used with VxWorks entry points. ACE provides + a wrapper function that transparently converts shell command + line arguments to argc/argv form. See <A HREF="#spa">below</a> + for details.<P> + + <LI>Unsigned long long support is not available with the g++ that + is distributed with Tornado 1.0.1/VxWorks 5.3.1, or with + GreenHills 1.8.8. The documentation says that it is supported + by g++, but try using it :-) Wind River technical support verified + that it doesn't work. ACE provides its own 64-bit unsigned integer + type, ACE_hrtime_t, so you don't even have to worry about this + problem if you use it.<P> + + <LI>There a gory problem with munch that is severely aggravated + by the presence of a static in the Wind River/g++ iostream.h. + ACE hides this and provides an easy-to-use workaround in the + very unlikely situation where it becomes a problem. + Please see ace/config-vxworks5.2-g++.h for more information.<P> + </OL> + In addition, as noted <A HREF="#g++">below</A> following the + discussion of the g++ -fno-implicit-templates option, + -fno-implicit-templates is broken. And, -O2 is not supported on some + targets.<P> + + Please note that ACE uses one of the spare fields in + the Wind River task control block, spare4, for thread- + specific storage. This field is specified in only one + place, in ace/OS.i, so it can easily be changed to one + of the other spare fields, if necessary.<P> + + Versions of ACE from 4.3.3 and beyond destroy dynamically + allocated singletons in the ACE library. But, they may not + properly destroy some static objects. If you have trouble + running a program multiple times, it may be necessary to + unload the module, using unld, and reload it between runs. + Alternatively, you could try calling <code>cplusDtors</code> + and then <code>cplusCtors</code> between runs.<P> + + <LI><B>MVS OpenEdition</B> <P> + + All of ACE has been ported to OpenEdition by Chuck Gehr <<A + HREF="mailto:gehr@sweng.stortek.com">gehr@sweng.stortek.com</A>>. + The ACE library, all the tests and most of the examples and apps build + clean. There are still some problems that need to be ironed out:<P> + + MVS does not support the dynamic linking dl...() calls that the Service + Configurator uses to dynamically link services at run time. As a result, all + the examples and apps that use a svc.conf file (for dynamically configuring + service objects) do not work, however, most of these apps can be built/run + statically. Also, the Svc_Conf_l.cpp and Svc_Conf_y.cpp files are generated + using flex and yacc on a ascii (not ebcdic) machine and as a result they don't + work very well with ebcdic svc.conf files. We should be able to regenerate + these files on MVS but MVS doesn't have flex. This is something that needs + to be done.<P> + + Some of the tests do not execute properly. This is a minority and over time + the goal is to get to 100%.<P> + + The make scheme for some of the apps still doesn't work perfectly on MVS. + This is mainly due to the way shared libraries are handled on MVS. See + <A HREF="#mvs">additional build tips for MVS</A> for more on + this.<P> </UL> <HR> @@ -375,111 +394,111 @@ clean. There are still some problems that need to be ironed out:<P> If you use the GNU GCC g++ compiler please note the following: <UL> - <LI>ACE transparently supports egcs. Please use the appropriate - g++ config and platform files for the OS on which you will use egcs. - - <strong><blink><font color="#ff0000">WARNING:</font></blink></strong> - The default behavior of the ACE Makefiles is to add - <code>-fno-exceptions</code> to egcs (and g++ starting with version - 2.8.0) invocations. This disables exception handling support. On - Solaris/sparc and Linux/alpha, it results in a 25 percent reduction - in the size of libACE.so. To enable exception handling, add - <code>exceptions=1</code> to your <code>make</code> command line - invocation, or to your - <code>$ACE_ROOT/include/makeinclude/platform_macros.GNU</code>.<P> - - <LI>With g++ 2.8.0, an internal compiler error is raised when - trying to compile ACE_Map_Manager instantiations. One workaround - is to disable optimization. The easiest way to do that is: - - <pre><code>% make optimize=0</code></pre> - - Or, you can edit your include/makeinclude/platform_sunos5_g++.GNU, - and comment out the <code>OCFLAGS</code> line.<P> - - <LI>Earlier (prior to 2.7.2) versions of g++ may not compile - certain parts of ACE correctly due to compiler bugs. Please - upgrade to g++ 2.7.2 or greater.<P> - - <LI>Make sure to update your gcc <code>config.status</code> - file. This file is produced when installing gcc; it specifies - where to install the binary files that gcc uses. For example, - it specifies whether to use Solaris's - <code>/usr/ccs/bin</code> binary utils or GNU binary - utils. The <code>config.status</code> file is an output of - the gcc <code>configure</code> script; it is preferable to use - the <code>--prefix</code> option to <code>configure</code> instead - of hacking its output.<P> - - <LI>If you are getting weird link errors when building libACE - on Solaris you are probably using the GNU linker. Try using - the Sun linker (/usr/ccs/bin/ld) instead. Note that gcc - first looks for the GNU linker if it is installed along - with gcc. The only way to not use the GNU linker is to - delete it from the installation or to build your own - compiler with no linker. Be aware that you still need the - libraries and includes of gcc.<P> - - <LI>Don't get too confused about contradictory statements in - the gcc documentation. It was written by different - people...<P> - - <LI>Make sure that the linker invoked by gcc produces code - that initializes static objects. Please see gcc's - documentation for using <CODE>collect2</CODE>.<P> - - <LI>By default, gcc (thru version 2.7.2, at least) uses - implicit template instantiation. Besides wasting space, - this breaks the use of ACE_Singleton: instead of one - singleton instance, there could be one instance per object - (.o) file that "sees" the template. Therefore, we have - overridden this default in ACE by enabling the - -fno-implicit-templates option to CCFLAGS in all - include/makeinclude/platform_*.GNU files that set CXX to g++.<P> - - <LI>The disadvantage of this approach is that you must - add template specializations for all templates that your - application uses to your own code. (The ACE libraries are - self-contained: you don't need to add the templates that - they use internally.) Examples of template specializations - occur in quite a few ACE .cpp files; see - apps/Gateway/Gateway/Proxy_Handler.cpp for one example. - An easy way to figure out what template instantiations are - need is to try to build your executable and pipe the output - through c++filt. The linker will report the missing - instantiations as undefined symbols. Iteration may be - necessary, if the template instantiations themselves reference - other templates.<P> - - <LI>Alternatively, you could apply the - <a href="ftp://ftp.cygnus.com/pub/g++/">Cygnus template repository - patches</a> and use the -frepo option instead of - -fno-implicit-templates. ACE readily this option for - application code: to enable it just add <code>repo=1</code> - to your <code>make</code> invocation, or to your - <code>include/makeinclude/platform_macros.GNU</code>. ACE - still uses explicit template instantiation for building its - libraries to help avoid link conflicts. Please see the g++ - FAQ and gcc manual for more information on the -frepo option.<p> - - <li>The implementation of templates for g++ version 2.8 - eliminates the restriction against static data members - in template classes.<p> - - <li>A final alternative is to - remove the -fno-implicit-templates option from the CCFLAGS - macro in your include/makeinclude/platform_macros.GNU, and - thereby use the default g++ implicit template instantiation.<P> - - <LI>Thanks to Thilo Kielmann <<A - HREF="mailto:kielmann@informatik.uni-siegen.de"> - kielmann@informatik.uni-siegen.de</A>> - for reporting the problem with ACE_Singleton on g++, and - for helping to find and implement these solutions.<P> - - <LI>On VxWorks only, g++ (thru version 2.7.2, at least, distributed - with Tornado 1.0.1/VxWorks 5.3.1), -fno-implicit-templates is - broken. In addition, -O2 is not supported on some targets.<P> + <LI>ACE transparently supports egcs. Please use the appropriate + g++ config and platform files for the OS on which you will use egcs. + + <strong><blink><font color="#ff0000">WARNING:</font></blink></strong> + The default behavior of the ACE Makefiles is to add + <code>-fno-exceptions</code> to egcs (and g++ starting with version + 2.8.0) invocations. This disables exception handling support. On + Solaris/sparc and Linux/alpha, it results in a 25 percent reduction + in the size of libACE.so. To enable exception handling, add + <code>exceptions=1</code> to your <code>make</code> command line + invocation, or to your + <code>$ACE_ROOT/include/makeinclude/platform_macros.GNU</code>.<P> + + <LI>With g++ 2.8.0, an internal compiler error is raised when + trying to compile ACE_Map_Manager instantiations. One workaround + is to disable optimization. The easiest way to do that is: + + <pre><code>% make optimize=0</code></pre> + + Or, you can edit your include/makeinclude/platform_sunos5_g++.GNU, + and comment out the <code>OCFLAGS</code> line.<P> + + <LI>Earlier (prior to 2.7.2) versions of g++ may not compile + certain parts of ACE correctly due to compiler bugs. Please + upgrade to g++ 2.7.2 or greater.<P> + + <LI>Make sure to update your gcc <code>config.status</code> + file. This file is produced when installing gcc; it specifies + where to install the binary files that gcc uses. For example, + it specifies whether to use Solaris's + <code>/usr/ccs/bin</code> binary utils or GNU binary + utils. The <code>config.status</code> file is an output of + the gcc <code>configure</code> script; it is preferable to use + the <code>--prefix</code> option to <code>configure</code> instead + of hacking its output.<P> + + <LI>If you are getting weird link errors when building libACE + on Solaris you are probably using the GNU linker. Try using + the Sun linker (/usr/ccs/bin/ld) instead. Note that gcc + first looks for the GNU linker if it is installed along + with gcc. The only way to not use the GNU linker is to + delete it from the installation or to build your own + compiler with no linker. Be aware that you still need the + libraries and includes of gcc.<P> + + <LI>Don't get too confused about contradictory statements in + the gcc documentation. It was written by different + people...<P> + + <LI>Make sure that the linker invoked by gcc produces code + that initializes static objects. Please see gcc's + documentation for using <CODE>collect2</CODE>.<P> + + <LI>By default, gcc (thru version 2.7.2, at least) uses + implicit template instantiation. Besides wasting space, + this breaks the use of ACE_Singleton: instead of one + singleton instance, there could be one instance per object + (.o) file that "sees" the template. Therefore, we have + overridden this default in ACE by enabling the + -fno-implicit-templates option to CCFLAGS in all + include/makeinclude/platform_*.GNU files that set CXX to g++.<P> + + <LI>The disadvantage of this approach is that you must + add template specializations for all templates that your + application uses to your own code. (The ACE libraries are + self-contained: you don't need to add the templates that + they use internally.) Examples of template specializations + occur in quite a few ACE .cpp files; see + apps/Gateway/Gateway/Proxy_Handler.cpp for one example. + An easy way to figure out what template instantiations are + need is to try to build your executable and pipe the output + through c++filt. The linker will report the missing + instantiations as undefined symbols. Iteration may be + necessary, if the template instantiations themselves reference + other templates.<P> + + <LI>Alternatively, you could apply the + <a href="ftp://ftp.cygnus.com/pub/g++/">Cygnus template repository + patches</a> and use the -frepo option instead of + -fno-implicit-templates. ACE readily this option for + application code: to enable it just add <code>repo=1</code> + to your <code>make</code> invocation, or to your + <code>include/makeinclude/platform_macros.GNU</code>. ACE + still uses explicit template instantiation for building its + libraries to help avoid link conflicts. Please see the g++ + FAQ and gcc manual for more information on the -frepo option.<p> + + <li>The implementation of templates for g++ version 2.8 + eliminates the restriction against static data members + in template classes.<p> + + <li>A final alternative is to + remove the -fno-implicit-templates option from the CCFLAGS + macro in your include/makeinclude/platform_macros.GNU, and + thereby use the default g++ implicit template instantiation.<P> + + <LI>Thanks to Thilo Kielmann <<A + HREF="mailto:kielmann@informatik.uni-siegen.de"> + kielmann@informatik.uni-siegen.de</A>> + for reporting the problem with ACE_Singleton on g++, and + for helping to find and implement these solutions.<P> + + <LI>On VxWorks only, g++ (thru version 2.7.2, at least, distributed + with Tornado 1.0.1/VxWorks 5.3.1), -fno-implicit-templates is + broken. In addition, -O2 is not supported on some targets.<P> </UL> @@ -497,80 +516,80 @@ HREF="#win32">process</A> for Win32 is different). Here's what you need to do:<P> <OL> -<LI> Install GNU make 3.7 or greater on your system (available via - anonymous ftp from prep.ai.mit.edu in the pub/gnu directory). - You <EM>must</EM> use GNU make or ACE won't compile.<P> - -<LI> Add an environment variable called ACE_ROOT that contains the - name of the root of the directory where you keep the ACE wrapper - source tree. The ACE recursive Makefile scheme needs this information. - There are several ways to set the ACE_ROOT variable. For - instance, in my .login file I have the following entry:<P> - -<pre><code> -% setenv ACE_ROOT /home/cs/faculty/schmidt/ACE_wrappers -</code></pre><P> - -However, if you're building a number of versions of ACE, e.g., for -different OS platforms or for different releases of ACE, you might use -the following approach: - -<pre><code> -% setenv ACE_ROOT $cwd -</code></pre> - -<LI> Edit the $ACE_ROOT/ace/OS.h file to update things like default - hostname and port numbers you'd like the programs in the - $ACE_ROOT/{apps,tests} directories to use by default. Note, - however that you can normally skip this step because the defaults - are typically fine for most systems. <P> - -<LI> Set the $ACE_ROOT/ace/config.h file to point to the appropriate - platform/compiler-specific header configurations (such as - config-sunos5-sunc++-4.x.h). This file contains the #defines that - are used throughout ACE to indicate which features your system - supports (see the $ACE_ROOT/ace/OS.h file for many - examples of how the ACE build configuration is affected by these - macro settings).<P> - - There are config files for most versions of UNIX. If there isn't a - version of this file that matches your platform/compiler, you'll - need to make one. Please send me email if you get it working so I - can add it to the master ACE release.<P> - -<LI> Set the $ACE_ROOT/include/makeinclude/platform_macros.GNU file - to point to the appropriate platform/compiler-specific Makefile - configurations, e.g., platform_sunos5_sunc++.GNU. This file - contains the compiler and Makefile directives that are - platform/compiler-specific<P> - -<LI> Note that since ACE builds shared libraries, you'll need to set - LD_LIBRARY_PATH to whereever you put the binary version of the - ACE library. For example, you probably want to do something like - the following<P> - -<pre><code> -% setenv LD_LIBRARY_PATH $ACE_ROOT/ace:$LD_LIBRARY_PATH -</code></pre><P> - -<LI> When all this is done, hopefully all you'll need to do is type:<P> - -<pre><code> -% make -</code></pre><P> - -at the root of the ACE source tree. This will build the ACE library, -tests, the examples, and the sample applications. Building the entire -ACE release can take a long time, however. Therefore, you might -consider cd'ing into the $ACE_ROOT/ace/ directory and running -<CODE>make</CODE> there to build just the ACE library. As a sanity -check, you might also want to build and run the automated <A -HREF="ACE_wrappers/tests/README">``one-button'' tests</A> in -$ACE_ROOT/tests/.<P> - -<LI> If you need to regenerate the Svc_Conf_y.cpp file, you'll need to -get <A HREF="http://www.cs.wustl.edu/~schmidt/byacc.tar.gz">Berkeley -YACC</A>. However, you should rarely, if ever, need to do this.<P> + <LI> Install GNU make 3.7 or greater on your system (available via + anonymous ftp from prep.ai.mit.edu in the pub/gnu directory). + You <EM>must</EM> use GNU make or ACE won't compile.<P> + + <LI> Add an environment variable called ACE_ROOT that contains the + name of the root of the directory where you keep the ACE wrapper + source tree. The ACE recursive Makefile scheme needs this information. + There are several ways to set the ACE_ROOT variable. For + instance, in my .login file I have the following entry:<P> + + <pre><code> + % setenv ACE_ROOT /home/cs/faculty/schmidt/ACE_wrappers + </code></pre><P> + + However, if you're building a number of versions of ACE, e.g., for + different OS platforms or for different releases of ACE, you might use + the following approach: + + <pre><code> + % setenv ACE_ROOT $cwd + </code></pre> + + <LI> Edit the $ACE_ROOT/ace/OS.h file to update things like default + hostname and port numbers you'd like the programs in the + $ACE_ROOT/{apps,tests} directories to use by default. Note, + however that you can normally skip this step because the defaults + are typically fine for most systems. <P> + + <LI> Set the $ACE_ROOT/ace/config.h file to point to the appropriate + platform/compiler-specific header configurations (such as + config-sunos5-sunc++-4.x.h). This file contains the #defines that + are used throughout ACE to indicate which features your system + supports (see the $ACE_ROOT/ace/OS.h file for many + examples of how the ACE build configuration is affected by these + macro settings).<P> + + There are config files for most versions of UNIX. If there isn't a + version of this file that matches your platform/compiler, you'll + need to make one. Please send me email if you get it working so I + can add it to the master ACE release.<P> + + <LI> Set the $ACE_ROOT/include/makeinclude/platform_macros.GNU file + to point to the appropriate platform/compiler-specific Makefile + configurations, e.g., platform_sunos5_sunc++.GNU. This file + contains the compiler and Makefile directives that are + platform/compiler-specific<P> + + <LI> Note that since ACE builds shared libraries, you'll need to set + LD_LIBRARY_PATH to whereever you put the binary version of the + ACE library. For example, you probably want to do something like + the following<P> + + <pre><code> + % setenv LD_LIBRARY_PATH $ACE_ROOT/ace:$LD_LIBRARY_PATH + </code></pre><P> + + <LI> When all this is done, hopefully all you'll need to do is type:<P> + + <pre><code> + % make + </code></pre><P> + + at the root of the ACE source tree. This will build the ACE library, + tests, the examples, and the sample applications. Building the entire + ACE release can take a long time, however. Therefore, you might + consider cd'ing into the $ACE_ROOT/ace/ directory and running + <CODE>make</CODE> there to build just the ACE library. As a sanity + check, you might also want to build and run the automated <A + HREF="ACE_wrappers/tests/README">``one-button'' tests</A> in + $ACE_ROOT/tests/.<P> + + <LI> If you need to regenerate the Svc_Conf_y.cpp file, you'll need to + get <A HREF="http://www.cs.wustl.edu/~schmidt/byacc.tar.gz">Berkeley + YACC</A>. However, you should rarely, if ever, need to do this.<P> </OL> @@ -611,65 +630,65 @@ Thank you to <A HREF="mailto:ben@jetpen.com">Ben Eng</A> for the pointer to the STL fixes. <OL> -<LI> Create a directory, e.g., C:\ACE, and copy all of the ACE - distribution into it. This directory will be referred to as - ACE_ROOT in the rest of this discussion.<BR><BR> -<LI> Create a file called config.h in the ACE_ROOT\ace directory - that contains: <BR> - <BR> - <CODE>#include "ace/config-win32.h"</CODE><BR> - <BR> -<LI> Now load up the project file for ACE (ACE_ROOT\ace\ACE_Library.mdp or - ACE_ROOT\ace\ace.dsw). If you are using MSVC 4.x, you will - need to add paths to your global settings. In - Tools|Options|Directories, add ACE_ROOT to your include path - and ACE_ROOT\ace to your library path. <BR><BR> -<LI> Each project will contain 8 different configurations. These - are a mixture of Debug/Release, Unicode/non-Unicode, and - Static/Dynamic library versions for both i386 and Alpha machines. - <STRONG>Note:</STRONG> If you - use the dynamic libraries, make sure you include ACE_ROOT\ace - in your PATH whenever you run programs that use ACE.<BR><BR> -<LI> If you are building for Windows NT and plan to use the STL - implementation that comes with ACE, then you can start building - now. If you are building on Windows 95, then you should add - the line <BR> - <BR> - <CODE>#define ACE_HAS_WINNT4 0</CODE><BR> - <BR> - before the #include statement in ACE_ROOT\ace\config.h and it - will turn off Windows NT 4 specific code.<BR> - <BR> - If you want to use the standard C++ headers (iostream, cstdio, ... - as defined by the C++ Standard Draft 2) that comes with MSVC 5, - then add the line <BR> - <BR> - <CODE>#define ACE_HAS_STANDARD_CPP_LIBRARY 1</CODE><BR> - <BR> - before the #include statement in ACE_ROOT\ace\config.h.<BR> - If you are building for Windows CE, you need to add the line <BR> - <br> - <code>#define ACE_HAS_WINCE</code> - <br> - before including <ace/config-win32.h>. Notice that CE uses a - different set of dsw/dsp files.<br> <br> - - The default project files which build ACE library have various - configurations to build dynamic/static, with or without Unicode - support. Although we recommend using the dynamic library, if, - for some reasons, you would rather work with static library, - you'll need to add the line <BR> - <BR> - <CODE>#define ACE_HAS_DLL 0</CODE><BR> - <BR> - before the #include statement in ACE_ROOT\ace\config.h. - Optionally but highly recommended, you can also add the line <BR> - <BR> - <CODE>#define __ACE_INLINE__ 0</CODE><BR> - <BR> - before the #include statement in ACE_ROOT\ace\config.h to disable - inline function and reduce the size of static libraries (and your - executables.)<BR><BR> + <LI> Create a directory, e.g., C:\ACE, and copy all of the ACE + distribution into it. This directory will be referred to as + ACE_ROOT in the rest of this discussion.<BR><BR> + <LI> Create a file called config.h in the ACE_ROOT\ace directory + that contains: <BR> + <BR> + <CODE>#include "ace/config-win32.h"</CODE><BR> + <BR> + <LI> Now load up the project file for ACE (ACE_ROOT\ace\ACE_Library.mdp or + ACE_ROOT\ace\ace.dsw). If you are using MSVC 4.x, you will + need to add paths to your global settings. In + Tools|Options|Directories, add ACE_ROOT to your include path + and ACE_ROOT\ace to your library path. <BR><BR> + <LI> Each project will contain 8 different configurations. These + are a mixture of Debug/Release, Unicode/non-Unicode, and + Static/Dynamic library versions for both i386 and Alpha machines. + <STRONG>Note:</STRONG> If you + use the dynamic libraries, make sure you include ACE_ROOT\ace + in your PATH whenever you run programs that use ACE.<BR><BR> + <LI> If you are building for Windows NT and plan to use the STL + implementation that comes with ACE, then you can start building + now. If you are building on Windows 95, then you should add + the line <BR> + <BR> + <CODE>#define ACE_HAS_WINNT4 0</CODE><BR> + <BR> + before the #include statement in ACE_ROOT\ace\config.h and it + will turn off Windows NT 4 specific code.<BR> + <BR> + If you want to use the standard C++ headers (iostream, cstdio, ... + as defined by the C++ Standard Draft 2) that comes with MSVC 5, + then add the line <BR> + <BR> + <CODE>#define ACE_HAS_STANDARD_CPP_LIBRARY 1</CODE><BR> + <BR> + before the #include statement in ACE_ROOT\ace\config.h.<BR> + If you are building for Windows CE, you need to add the line <BR> + <br> + <code>#define ACE_HAS_WINCE</code> + <br> + before including <ace/config-win32.h>. Notice that CE uses a + different set of dsw/dsp files.<br> <br> + + The default project files which build ACE library have various + configurations to build dynamic/static, with or without Unicode + support. Although we recommend using the dynamic library, if, + for some reasons, you would rather work with static library, + you'll need to add the line <BR> + <BR> + <CODE>#define ACE_HAS_DLL 0</CODE><BR> + <BR> + before the #include statement in ACE_ROOT\ace\config.h. + Optionally but highly recommended, you can also add the line <BR> + <BR> + <CODE>#define __ACE_INLINE__ 0</CODE><BR> + <BR> + before the #include statement in ACE_ROOT\ace\config.h to disable + inline function and reduce the size of static libraries (and your + executables.)<BR><BR> </Ol> <B>ACE TESTS</B><P> @@ -688,32 +707,32 @@ install TCP/IP and configure it to ignore the absence of a network card. This is one method:<P> <OL> - <LI> Run Control Panel - <LI> Choose Network from Control Panel - <LI> Add Adapter: MS Loopback Adapter - <LI> Configure MS Loopback Adapter with 802.3 (default) - <LI> Add Software: TCP/IP Protocol - <LI> Configure TCP/IP Protocol with a valid IP address and subnet mask. - Leave everything else at the default settings. - <LI> Add Software: Workstation - <LI> Exit and Restart System - <LI> Run Control Panel again - <LI> Choose Services from Control Panel - <LI> The following services are not necessary and may - be set to Disabled Startup: <BR> - Alerter<BR> - Computer Browser<BR> - Net logon<BR> - Messanger<BR> - <LI> Choose Network from Control Panel - <LI> Confirm the following setup. This is all you need to run ACE:<BR> - Installed Software:<BR> - Computer Browser<BR> - MS Loopback Adapter Driver<BR> - TCP/IP Protocol<BR> - Workstation<BR> - Installed Adapter Cards:<BR> - MS Loopback Adapter<P> + <LI> Run Control Panel + <LI> Choose Network from Control Panel + <LI> Add Adapter: MS Loopback Adapter + <LI> Configure MS Loopback Adapter with 802.3 (default) + <LI> Add Software: TCP/IP Protocol + <LI> Configure TCP/IP Protocol with a valid IP address and subnet mask. + Leave everything else at the default settings. + <LI> Add Software: Workstation + <LI> Exit and Restart System + <LI> Run Control Panel again + <LI> Choose Services from Control Panel + <LI> The following services are not necessary and may + be set to Disabled Startup: <BR> + Alerter<BR> + Computer Browser<BR> + Net logon<BR> + Messanger<BR> + <LI> Choose Network from Control Panel + <LI> Confirm the following setup. This is all you need to run ACE:<BR> + Installed Software:<BR> + Computer Browser<BR> + MS Loopback Adapter Driver<BR> + TCP/IP Protocol<BR> + Workstation<BR> + Installed Adapter Cards:<BR> + MS Loopback Adapter<P> </OL> @@ -735,8 +754,8 @@ for these notes):<p> <LI>C++ object modules must be post-processed by a VxWorks utility called ``munch.'' ACE includes a perl script called <A -HREF="http://www.cs.wustl.edu/~schmidt/ACE_wrappers/bin/ace_ld">$ACE_ROOT/bin/ace_ld</A>, -which is called from the Makefiles, replacing + HREF="http://www.cs.wustl.edu/~schmidt/ACE_wrappers/bin/ace_ld">$ACE_ROOT/bin/ace_ld</A>, + which is called from the Makefiles, replacing the traditional <code>ld</code> step. You must have Perl installed to use <code>ace_ld</code>. <P> @@ -819,8 +838,8 @@ This requires that <code>main</code> be declared with its arguments even if they're not used, and with <code>int</code> return type: <pre><code> - int - main (int, char *[]) +int +main (int, char *[]) </code></pre> Alternatively, this feature can be disabled by commenting out the @@ -850,7 +869,7 @@ VxWorks <code>sp</code>, or ACE'S <A NAME="spa"><code>spa</code></A>. to <code>ace_main</code>. Its usage is: <pre><code> - spa ace_main, "arg1" [, ...] +spa ace_main, "arg1" [, ...] </code></pre> All arguments must be quoted, even numbers.<p> @@ -927,107 +946,107 @@ on Windows NT hosts: <li>Path setting that seems to be working is:<p> <pre> -/tornado/host/x86-win32/bin: -/tornado/host/x86-win32/lib/gcc-lib/i386-wrs-vxworks/cygnus-2.7.2-960126: -/tornado/host/x86-win32/i386-wrs-vxworks/bin: -/ace/ace_wrappers/bin: -/gnuwin32/b18/H-i386-cygwin32/bin: -/gnuwin32/b18/tcl/bin: -/WINNT/system32: -/WINNT: -/WINNT/system32/nls/ENGLISH: -/bin -</pre> - - Other environment variables:<p> -<pre> -WIND_BASE=/tornado -SHELL=/bin/sh.exe -TERM=pcbios -TAO_ROOT=/ace/ACE_wrappers.vxworks/TAO -CPP_LOCATION=/Program Files/DevStudio/VC/bin/CL.EXE -GCC_EXEC_PREFIX=/tornado/host/x86-win32/lib/gcc-lib/ -WIND_HOST_TYPE=x86-win32 -ACE_ROOT=/ace/ACE_wrappers.vxworks -</pre> + /tornado/host/x86-win32/bin: + /tornado/host/x86-win32/lib/gcc-lib/i386-wrs-vxworks/cygnus-2.7.2-960126: + /tornado/host/x86-win32/i386-wrs-vxworks/bin: + /ace/ace_wrappers/bin: + /gnuwin32/b18/H-i386-cygwin32/bin: + /gnuwin32/b18/tcl/bin: + /WINNT/system32: + /WINNT: + /WINNT/system32/nls/ENGLISH: + /bin + </pre> + + Other environment variables:<p> + <pre> + WIND_BASE=/tornado + SHELL=/bin/sh.exe + TERM=pcbios + TAO_ROOT=/ace/ACE_wrappers.vxworks/TAO + CPP_LOCATION=/Program Files/DevStudio/VC/bin/CL.EXE + GCC_EXEC_PREFIX=/tornado/host/x86-win32/lib/gcc-lib/ + WIND_HOST_TYPE=x86-win32 + ACE_ROOT=/ace/ACE_wrappers.vxworks + </pre> <li><code>/tornado</code> is the root of the Tornado install - (<code>$WIND_BASE</code>). + (<code>$WIND_BASE</code>). <li><code>/gnuwin32</code> is the root of a Cygnus GNU download and install. <li><code>/bin</code> content is:<p> -<pre> -aced.dll -cygwin.dll -perl.exe -rm.exe -sh.exe -true -</pre> + <pre> + aced.dll + cygwin.dll + perl.exe + rm.exe + sh.exe + true + </pre> - <code>aced.dll</code> is produced in an ACE NT source tree according to - documented procedure for NT VC++5.0 ACE build. + <code>aced.dll</code> is produced in an ACE NT source tree according to + documented procedure for NT VC++5.0 ACE build. - <code>cygwin.dll</code> is from the Cygnus GNU software download and install. + <code>cygwin.dll</code> is from the Cygnus GNU software download and install. <li>Basically, follow documented procedure for ACE build/install on UNIX - platform. Create a <code>$ACE_ROOT/ace/config.h</code> that looks like:<p> -<pre> -#define __ACE_INLINE__ 0 -#define ACE_HAS_DLL 0 -#include "config-vxworks5.x.h" -</pre> + platform. Create a <code>$ACE_ROOT/ace/config.h</code> that looks like:<p> + <pre> + #define __ACE_INLINE__ 0 + #define ACE_HAS_DLL 0 + #include "config-vxworks5.x.h" + </pre> - And create a <code>$ACE_ROOT/include/makeinclude/platform_macros.GNU</code> - that looks like:<p> -<pre> -WIND_BASE = /tornado -WIND_HOST_TYPE = x86-win32 -PATH += :$(WIND_BASE)/host/$(WIND_HOST_TYPE)/bin -CPU = I80486 -include $(ACE_ROOT)/include/makeinclude/platform_NTvxworks5.x_g++.GNU -</pre> + And create a <code>$ACE_ROOT/include/makeinclude/platform_macros.GNU</code> + that looks like:<p> + <pre> + WIND_BASE = /tornado + WIND_HOST_TYPE = x86-win32 + PATH += :$(WIND_BASE)/host/$(WIND_HOST_TYPE)/bin + CPU = I80486 + include $(ACE_ROOT)/include/makeinclude/platform_NTvxworks5.x_g++.GNU + </pre> - (But, I guess the PATH+= line is superfluous based on the PATH as shown - previously). + (But, I guess the PATH+= line is superfluous based on the PATH as shown + previously). - Finally, create a - <code>$ACE_ROOT/include/makeinclude/platform_NTvxworks5.x_g++.GNU</code> - with diff output from 'diff platform_vxworks5.x_g++.GNU - platform_NTvxworks5.x_g++.GNU' that looks like: + Finally, create a + <code>$ACE_ROOT/include/makeinclude/platform_NTvxworks5.x_g++.GNU</code> + with diff output from 'diff platform_vxworks5.x_g++.GNU + platform_NTvxworks5.x_g++.GNU' that looks like: -<pre> -58c58 -< HOST_DIR = $(WIND_BASE)/host/sun4-solaris2 ---- -> HOST_DIR = $(WIND_BASE)/host/x86-win32 -62,63c62,63 -< CXX = g++$(TOOLENV) -< CFLAGS += -DVXWORKS -D_REENTRANT -ansi -fno-builtin --fno-defer-pop -fvolatile -nostdinc -nostdlib -pipe -Wall ---- -> CXX = $(CC) -> CFLAGS += -DVXWORKS -D_REENTRANT -ansi -fno-builtin -fno-defer-pop \ - -fvolatile -nostdinc -nostdlib -Wall #-pipe -</pre> + <pre> + 58c58 + < HOST_DIR = $(WIND_BASE)/host/sun4-solaris2 + --- + > HOST_DIR = $(WIND_BASE)/host/x86-win32 + 62,63c62,63 + < CXX = g++$(TOOLENV) + < CFLAGS += -DVXWORKS -D_REENTRANT -ansi -fno-builtin + -fno-defer-pop -fvolatile -nostdinc -nostdlib -pipe -Wall + --- + > CXX = $(CC) + > CFLAGS += -DVXWORKS -D_REENTRANT -ansi -fno-builtin -fno-defer-pop \ + -fvolatile -nostdinc -nostdlib -Wall #-pipe + </pre> <li>Now, follow the existing documentation for a UNIX platform build of ACE such as: - <pre> - cd $ACE_ROOT/ace; make - </pre> + <pre> + cd $ACE_ROOT/ace; make + </pre> <li>To build $ACE_ROOT/tests, I had to use the <code>make.exe</code> in the - <code>/gnuwin32/b18/H-i386-cygwin32/bin</code> directory as I couldn't get - make shipped with Tornado to run ace_ld and I couldn't figure out any - other work around.<p> + <code>/gnuwin32/b18/H-i386-cygwin32/bin</code> directory as I couldn't get + make shipped with Tornado to run ace_ld and I couldn't figure out any + other work around.<p> - <pre> - cd $ACE_ROOT/tests; /gnuwin32/b18/H-i386-cygwin32/bin/make - </pre> + <pre> + cd $ACE_ROOT/tests; /gnuwin32/b18/H-i386-cygwin32/bin/make + </pre> - Also, running the tests works as already documented. + Also, running the tests works as already documented. </ol> <h5>TAO on NT Tornado host, VxWorks target.</h5> @@ -1041,18 +1060,18 @@ include $(ACE_ROOT)/include/makeinclude/platform_NTvxworks5.x_g++.GNU makefiles are using the absolute path to tao_idl.exe.) <li>Build orbsvcs. - <pre> - CPP_LOCATION=/Program Files/DevStudio/VC/bin/CL.exe - cd $TAO_ROOT/orbsvcs/orbsvcs - /gnuwin32/b18/H-i386-cygwin32/bin/make - </pre> + <pre> + CPP_LOCATION=/Program Files/DevStudio/VC/bin/CL.exe + cd $TAO_ROOT/orbsvcs/orbsvcs + /gnuwin32/b18/H-i386-cygwin32/bin/make + </pre> <li>Build $TAO_ROOT/tao - <pre> - CPP_LOCATION=/Program Files/DevStudio/VC/bin/CL.exe - cd $TAO_ROOT/tao - /gnuwin32/b18/H-i386-cygwin32/bin/make - </pre> + <pre> + CPP_LOCATION=/Program Files/DevStudio/VC/bin/CL.exe + cd $TAO_ROOT/tao + /gnuwin32/b18/H-i386-cygwin32/bin/make + </pre> <li>Build $TAO_ROOT/tests </ol> @@ -1073,40 +1092,40 @@ Here's what you need to do:<P> <OL> -<LI> Build and install ACE on UNIX as described <A -HREF="#unix">earlier</A>. If ACE is built at the root of the ACE -source tree (and ACE has been ported to your platform, of course) the -netsvcs static and shared object libraries should be built -automatically. In addition, the server driver program -(<CODE>main</CODE>) contained in <A -HREF="http://www.cs.wustl.edu/~schmidt/ACE_wrappers/netsvcs/servers/main.cpp"> -$ACE_ROOT/netsvcs/servers/main.cpp</A> should also be compiled and ready to run.<P> - -<LI> Set your LD_LIBRARY_PATH environment variable to where the binary - version of the ACE netsvcs library. For example, you probably - want to do something like the following<P> - -<pre><code> -% setenv LD_LIBRARY_PATH $ACE_ROOT/ace:$LD_LIBRARY_PATH -</code></pre><P> - -<LI>By default, if the shared object library is built, the services - are linked into the <CODE>main</CODE> driver program dynamically. - To specify which services should be linked in and executed, edit the -<A -HREF="http://www.cs.wustl.edu/~schmidt/ACE_wrappers/netsvcs/servers/svc.conf"> -$ACE_ROOT/netsvcs/servers/svc.conf</A> file. During your editing, - you should update information (such as the default service port - numbers) that affects the initialization of services in this - file. Refer to the <A HREF="ACE-papers.html#config">Service Configurator</A> - documentation to learn how the configuration file is parsed and - how the services are dynamically linked and executed. In - addition, refer to the <A HREF="ACE-netsvcs.html">Network - Services</A> documentation to learn more about how to configure - each network service.<P> - -<LI>If you only want to link the services statically, simply remove - or rename the svc.conf file.<P> + <LI> Build and install ACE on UNIX as described <A + HREF="#unix">earlier</A>. If ACE is built at the root of the ACE + source tree (and ACE has been ported to your platform, of course) the + netsvcs static and shared object libraries should be built + automatically. In addition, the server driver program + (<CODE>main</CODE>) contained in <A + HREF="http://www.cs.wustl.edu/~schmidt/ACE_wrappers/netsvcs/servers/main.cpp"> + $ACE_ROOT/netsvcs/servers/main.cpp</A> should also be compiled and ready to run.<P> + + <LI> Set your LD_LIBRARY_PATH environment variable to where the binary + version of the ACE netsvcs library. For example, you probably + want to do something like the following<P> + + <pre><code> + % setenv LD_LIBRARY_PATH $ACE_ROOT/ace:$LD_LIBRARY_PATH + </code></pre><P> + + <LI>By default, if the shared object library is built, the services + are linked into the <CODE>main</CODE> driver program dynamically. + To specify which services should be linked in and executed, edit the + <A + HREF="http://www.cs.wustl.edu/~schmidt/ACE_wrappers/netsvcs/servers/svc.conf"> + $ACE_ROOT/netsvcs/servers/svc.conf</A> file. During your editing, + you should update information (such as the default service port + numbers) that affects the initialization of services in this + file. Refer to the <A HREF="ACE-papers.html#config">Service Configurator</A> + documentation to learn how the configuration file is parsed and + how the services are dynamically linked and executed. In + addition, refer to the <A HREF="ACE-netsvcs.html">Network + Services</A> documentation to learn more about how to configure + each network service.<P> + + <LI>If you only want to link the services statically, simply remove + or rename the svc.conf file.<P> </OL> <H4><A NAME="win32svcs">Building and Installing ACE Network Services on Win32</A></H4> @@ -1123,12 +1142,12 @@ in your PATH.<P> <H3><A NAME="advanced">Advanced Topics</A></H3> <UL> -<LI><A HREF="#cloning">Cloning the Source Tree</A> -<LI><A HREF="#corba">Building CORBA Versions of ACE</A> -<LI><A HREF="#mvs">Additional Build Tips for MVS</A> -<LI><A HREF="#flags">Makfile Flags</A> -<LI><A HREF="http://www.cs.wustl.edu/~levine/CVS.html">Version Control</A> -<LI><A HREF="http://www.cs.wustl.edu/~cleeland/ace/makefile-hints.html">ACE Makefile hints</a> + <LI><A HREF="#cloning">Cloning the Source Tree</A> + <LI><A HREF="#corba">Building CORBA Versions of ACE</A> + <LI><A HREF="#mvs">Additional Build Tips for MVS</A> + <LI><A HREF="#flags">Makfile Flags</A> + <LI><A HREF="http://www.cs.wustl.edu/~levine/CVS.html">Version Control</A> + <LI><A HREF="http://www.cs.wustl.edu/~cleeland/ace/makefile-hints.html">ACE Makefile hints</a> </UL> <H4><A NAME="cloning">Cloning the Source Tree</A></H4> @@ -1213,33 +1232,33 @@ UNIX, therefore, the instructions under <A HREF="#aceinstall">Building and Installing ACE on Unix</A> can be used along with the following additional tips:<P> - You can get a copy of GNU make that has been ported to MVS OpenEdition from - the <A HREF="http://www.s390.ibm.com/products/oe/index.html">IBM OpenEdition web site</A>. - ACE's make scheme generates compile commands that have options and - operands interspersed. By default, the c89/cc/c++ compiler expects all options to - precede all operands. To get around this, you must set a special - compiler environment variable (_CXX_CCMODE) to 1 which tells the compiler - to allow options and operands to be interspersed.<P> - - Note that the environment variable LD_LIBRARY_PATH is called LIBPATH - on MVS.<P> - - Shared objects are built a little different on MVS than on - other UNIX implementations. This has been accounted for in the makefiles - that come with ACE When the linker (via the cxx command) builds the - libACE.so file it will also create a file called libACE.x. This is a - side-deck file and it must be included in subsequent link edits with - application code. For more information on this see the C/C++ MVS - Programming Guide. If you want to build your application statically, - i.e., using libACE.a instead of libACE.so, you can set ACELIB to - ACELIB_STATIC in platform_mvs.GNU.<P> - - When the libACE.so file is built (via the MVS pre-linker and binder), you - will get a rc=4 from the pre-linker. This is ok. This is due to some - warnings about unresolved references which should get resolved during the - link step. Note, however, there shouldn't be any unresolved references - from the binder (linkage editor). You can get pre-link and link maps by - uncommenting the PMAP and LMAP lines in the platform_mvs.GNU file.<P> +You can get a copy of GNU make that has been ported to MVS OpenEdition from +the <A HREF="http://www.s390.ibm.com/products/oe/index.html">IBM OpenEdition web site</A>. +ACE's make scheme generates compile commands that have options and +operands interspersed. By default, the c89/cc/c++ compiler expects all options to +precede all operands. To get around this, you must set a special +compiler environment variable (_CXX_CCMODE) to 1 which tells the compiler +to allow options and operands to be interspersed.<P> + +Note that the environment variable LD_LIBRARY_PATH is called LIBPATH +on MVS.<P> + +Shared objects are built a little different on MVS than on +other UNIX implementations. This has been accounted for in the makefiles +that come with ACE When the linker (via the cxx command) builds the +libACE.so file it will also create a file called libACE.x. This is a +side-deck file and it must be included in subsequent link edits with +application code. For more information on this see the C/C++ MVS +Programming Guide. If you want to build your application statically, +i.e., using libACE.a instead of libACE.so, you can set ACELIB to +ACELIB_STATIC in platform_mvs.GNU.<P> + +When the libACE.so file is built (via the MVS pre-linker and binder), you +will get a rc=4 from the pre-linker. This is ok. This is due to some +warnings about unresolved references which should get resolved during the +link step. Note, however, there shouldn't be any unresolved references +from the binder (linkage editor). You can get pre-link and link maps by +uncommenting the PMAP and LMAP lines in the platform_mvs.GNU file.<P> <HR><P> <H4><A NAME="flags">Makefile Flags</A></H4> @@ -1262,7 +1281,7 @@ debug Enable debugging; see DCFLAGS and DCCFLAGS. exceptions Enable exception handling (not supported by all platforms). fast Enable -fast option, e.g., with Sun C++. inline Enable ACE inlining. Some platforms enable inlining by - default, others do not. +default, others do not. optimize Enable optimization; see OCFLAGS and OCCFLAGS. orbix Enable use of Orbix. probe Enable ACE_Timeprobes. @@ -1270,11 +1289,11 @@ profile Enable profiling; see PCFLAGS and PCCFLAGS. purify Purify all executables. quantify Quantify all executables. repo Use GNU template repository (g++ with repo patches and - egcs only). +egcs only). shared_libs Build shared libraries. Ignored if static_libs_only is set. static_libs Build shared libraries. Ignored if shared_libs_only is set. shared_libs_only Only build shared libraries. Ignored if no SHLIBs are - specified by the Makefile, as in performance-tests/Misc. +specified by the Makefile, as in performance-tests/Misc. static_libs_only Only build static libraries. xt_reactor Build the XtReactor @@ -1285,9 +1304,9 @@ targets are listed below. Target Description ------ ----------- show_statics Lists all static objects in object files built for - current directory. Only supported for g++. +current directory. Only supported for g++. show_uninit Lists all uninitialized in object files built for - current directory. Only supported for g++. +current directory. Only supported for g++. </PRE> <HR><P> |