Reflect recent changes

This commit is contained in:
Ralph Lange
2003-04-04 13:51:08 +00:00
parent c8c64a212c
commit b97ef3dfeb

View File

@@ -5,50 +5,88 @@ Please mail questions, comments, corrections, additional examples, etc.
to Ralph.Lange@mail.bessy.de
NOTE: 3.14 will ONLY compile on HPUX 11 systems. HPUX 10 does not have
the necessary thread support and will never ever be supported for
EPICS base versions >= 3.14.
the necessary posix thread support and will never ever be
supported for EPICS base versions >= 3.14.
Tools needed
------------
o HP's ANSI C compiler (cc)
o For compiling with HP native compilers
For compiling with the HP C++ compiler (hpux-parisc)
o Recent version of HP's aCC C++ compiler aCC (we use A.03.39)
- HP's ANSI C compiler (cc)
For compiling with GNU g++
o GNU g++ >= 2.95 (we use 3.2)
- Recent version of HP's aCC C++ compiler aCC (we use A.03.39)
HP's old frontend-based C++ compiler (CC) will not work.
o For compiling with the GNU compilers
- GNU assembler (part of the binutils package)
- GNU gcc/g++ >= 3 (I would suggest >= 3.2)
If you do not have GCC as a binary package, you can quite easily
build a GCC from scratch (aka "make bootstrap"). I was successful
using the following options to the configure script:
../configure
--prefix=<compiler install location>
--enable-version-specific-runtime-libs
--enable-languages=c++
--with-gnu-as
--with-as=<location of GNU assembler executable>
--enable-shared
--enable-threads=posix
Remember to set the install location of your GCC package in the
configuration file ../configure/os/CONFIG_SITE.Common.hpux-parisc-gnu
to make the EPICS builds use it.
Environment
-----------
Default is compiling with the generic HP aCC compiler. To use the GNU compiler,
set the environment variable EPICS_HOST_ARCH to hpux-parisc-gnu before starting
to compile base.
Default is compiling with the generic HP aCC compiler. To use the GNU
suite, set the environment variable EPICS_HOST_ARCH=hpux-parisc-gnu
before starting to compile base.
Shared Libraries
----------------
Generating shared libraries is supported, suggested and the default.
You have to set the appropriate search path variable in
../configure/os/CONFIG_SITE.hpux-parisc.hpux-parisc to make shared
libraries work properly. (You can always override with setting the
SHLIB_PATH environment variable when executiong the binaries.)
If you are planning to carry around your binaries to other machines, you
have to set the shared library search path accordingly (i.e. to the
generic location where you will install the shared libraries of EPICS
base on the target machines). This is done in the configure area (in the
file ../configure/os/CONFIG_SITE.Common.hpux-parisc).
The setting of internal and external search paths for libraries is aimed
at stability. The order of search is:
1. Where the library was found at compile time. (always)
2. The INSTALL_LOCATION at compile time. (convenient when developing)
3. Any locations explicitly configured. (generic location)
4. The environment variable SHLIB_PATH. (fallback)
I changed the usual behaviour of "environment overrides default" to
increase reliability: As long as the libraries are in the generic
location, a user can set the environment wildly to anything without any
impact on the reliable operation of EPICS applications.
Still on systems where the libraries are not found at the generic place
(and you don't have the root privilege to put them there), setting the
environment you can point your client application to a fallback
location.
Known Problems
--------------
o Caveat: To be compatible with HP-UX 10, GCC defaults to use the DCE
(user space) threads package. If you see messages like "errLogInit
failed" when running a Channel Access client, you are probably
linking against the old DCE threads library instead of libpthread.
o There is a problem with a CA client not detecting a network
connection going down. This only happens with some clients, though.
o Statically built binaries don't work properly (yet).
o GNU built binaries don't work properly (yet).
o The 3.13 compatibility mode isn't thoroughly tested yet.