The shmget(2) interfaces are not always used on HP-UX, even
though they exist, as anonymous memory allocated using shmget(2)
cannot be used to store the standard HP-UX msemaphore semaphores. For
this reason, it may not be possible to specify the DB_SYSTEM_MEM
flag on some versions of HP-UX. (We have only seen this problem on HP-UX
10.XX, so the simplest workaround may be to upgrade your HP-UX release.)
It is not possible to store the standard HP-UX msemaphore semaphores in
memory returned by malloc(3) in some versions of HP-UX. For
this reason, it may not be possible to specify both the DB_PRIVATE
and DB_THREAD flags on some versions of HP-UX. (We have only seen
this problem on HP-UX 10.XX, so the simplest workaround may be to upgrade
your HP-UX release.)
During configuration I see a message that large file support has
been turned off.
Some HP-UX system include files redefine "open" when big-file support (the
HAVE_FILE_OFFSET_BITS and _FILE_OFFSET_BITS #defines) is enabled. This
causes problems when compiling for C++, where "open" is a legal
identifier, used in the Berkeley DB C++ API. For this reason, we automatically
turn off big-file support when Berkeley DB is configured with a C++ API. This
should not be a problem for applications unless there is a need to create
databases larger than 2GB.
I can't compile and run multi-threaded applications.
Special compile-time flags are required when compiling threaded
applications on HP-UX. If you are compiling a threaded application, you
must compile with the _REENTRANT flag:
cc -D_REENTRANT ...
The Berkeley DB library will automatically build with the correct options.
Due to the constraints of the PA-RISC memory architecture, HP-UX does not
allow a process to map a file into its address space multiple times.
For this reason, each Berkeley DB environment may be opened only once by a
process on HP-UX, i.e., calls to DBENV->open will fail if the
specified Berkeley DB environment has been opened and not subsequently closed.
When compiling with gcc, I see the following error:
#error "Large Files (ILP32) not supported in strict ANSI mode."
We believe this is an error in the HP-UX include files, but we don't
really understand it. The only workaround we have found is to add
-D__STDC_EXT__ to the C preprocessor defines as part of compilation.
When using the Tcl or Perl APIs (including running the test suite) I
see the error "Can't shl_load() a library containing Thread Local Storage".
This problem happens when HP-UX has been configured to use pthread mutex
locking and an attempt is made to call Berkeley DB using the Tcl or Perl APIs. We
have never found any way to fix this problem as part of the Berkeley DB build
process. To work around the problem, rebuild tclsh or perl and modify its build
process to explicitly link it against the HP-UX pthread library (currently
/usr/lib/libpthread.a).
When running an executable that has been dynamically linked
against the Berkeley DB library, I see the error "Can't find path for shared library"
even though I've correctly set the SHLIB_PATH environment variable.
By default, some versions of HP-UX ignore the dynamic library search path
specified by the SHLIB_PATH environment variable. To work around this, specify
the "+s" flag to ld when linking, or run