User's Guide
Adding New Versions to a Shared Library
To rebuild a shared library with new versions of some of the object files, use the aCC command
and the -b option with the old object files and the newly compiled object files. The new source
files should use the HP_SHLIB_VERSION pragma. Refer to HP-UX Online Linker and Libraries
User’s Guide for more information.
Standard HP-UX Libraries and Header Files
HP-UX includes Several libraries that provide system services. You can access HP-UX standard
libraries by using header files that declare interfaces to those libraries. Refer to the HP-UX Reference
Manual for more information on library routines.
Location of Standard HP-UX Header Files
The standard HP-UX header files are located in /usr/include directory.
Using Header Files
To use a system library function, your HP aC++ source code must include the preprocessor directive
#include.
Example:
#include <filename.h>
where filename.h is the name of the C++ header file for the library function you want to use.
By enclosing filename.h in angle brackets, the HP aC++ compiler looks for that particular
header file in a standard location on the system. The compiler first looks for header files in /opt/
aCC/include directory. When no header files are found in this directory, it searches /usr/
includeUse header file options to modify the search path..
Example
To use the getenv function that is in the standard system libraries (/usr/lib/libc.so and
/usr/lib/libc.a), specify:#include <stdlib.h>
because the external declaration of getenv is found in the header file /usr/include/stdlib.h.
Allocation Policies for Containers
By default, allocating memory for STL containers is optimized for large applications. Defaults have
been tuned with speed efficiency as a primary concern. Space efficiency was considered, but was
secondary. Typically, therefore, memory is not allocated as required, because this method is slow
and inefficient. The containers obtain a block of memory to hold many elements, and when this
fills up, they get another block. The size of the block depends on the element size. As a result,
containers with only a few items might end up allocating too much memory. This default behavior
can be adjusted to individual application needs.
For -AP Standard Library
The inline template function__rw_allocation_size can be explicitly specialized to return the
number of units for each type’s use in any container:
template <>
inline size_t __rw-allocation_size(bar*,size_t) {
return 1;
}
This would initially allocate one unit when dealing with containers of type bar. Alternatively, if
RWSTD_STRICT_ANSI is not defined, then container member functionallocation_size can be
used to directly set buffer_size, the number of units to allocate.
184 Tools and Libraries