ObjectSpace V2.1 installation status at CERN
Last update - 6th December 1999.
Shortcuts to:
Compiling and linking,
Platforms and libraries,
Known bugs and problems,
Fixed problems,
Objectivity/DB and persistent STL,
Local installation tips
Compiling and linking with ObjectSpace ToolKit
ObjectSpace ToolKit V2.1 is installed in AFS directory /afs/cern.ch/sw/lhcxx/specific/@sys/ObjectSpace/2.1/ToolKit.
There are several flavours of the ObjectSpace libraries, depending on which
compile-time options were used to create them. In general, the name of
the library indicates what options were used, e.g. libospace.st.a is a
single-threaded version and libospace.mt.a is multi-threaded. altstd
means that the ToolKit has been compiled with compiler native STL. The full
list of the libraries currently available is given below.
The easiest way to use these libraries is to include the right configuration
file into your Makefile. Configuration files can be found in $(TOOLKIT)/config
directory. There is a separate file for each library type, e.g. define.st.cfg
for libospace.st.a. Including the right configuration file ensures that
your program is compiled with the same options as the library was. Here
are some of the variables defined by each configuration file:
TOOLKIT - ToolKit installation directory
CC_EXEC - the compiler executable name
CC_DEFINES - preprocessor symbols
CC_FLAGS - additional flags for the compiler
CC_EH - switches needed for exception handling
CC_MT - switches needed to use multi-threading
OLIBS - ObjectSpace library name (in the -lospace form)
Example use in a Makefile:
include $(TOOLKIT)/define.st.cfg
C_FLAGS = $(CC_DEFINES) $(CC_FLAGS) $(CC_EH) $(CC_MT)
%.o : %.cpp
@echo compiling $*.cpp ...
@${CC_EXEC} -c $*.cpp ${C_FLAGS} -o $*.o
exec: $(OBJS)
${CC_EXEC} $(OBJS) -L{TOOLKIT}/lib $(OLIBS) -o exec
-
Shared libraries on UNIX are not directly supported by
ObjectSpace. I have created them by converting the
whole static archive library into a shared object. On
NT there are separate libraries for every package in
ToolKit - ObjecSpace is working on similar scheme for
UNIX.
Shared libraries are picked up by linker by default. Do
not forget to set load library path before starting a
program linked dynamically, or use options like -rpath
when linking.
back to top of page
Platforms and libraries
-
Linux
Libraries:
ospace.st.a - (include ${TOOLKIT}/config/define.st.cfg file)
ospace.mt.a - (include
${TOOLKIT}/config/define.mt.cfg file)
ospace.altstd.mt.a (include ${TOOLKIT}/config/define.altstd.mt.cfg file)
Shared libraries exist
-
Solaris 2.51, 2.6
Libraries (compiled with CC 4.2):
ospace.st.a - (include ${TOOLKIT}/config/define.st.cfg file)
ospace.mt.a - (include
${TOOLKIT}/config/define.mt.cfg file)
Shared libraries exist
-
Solaris 7
Libraries: (compiled with CC 5.0):
ospace.noCstd.mt.a - (include ${TOOLKIT}/config/define.noCstd.mt.cfg file)
This library is compiled with
-library=iostream,no%Cstd options. Equivalent to compiling with CC
4.2. For compatibility with Objectivity.
ospace.altstd.mt.a - (include ${TOOLKIT}/config/define.altstd.mt.cfg file)
This library is not compatible with current build of
Objectivity (standard C++ library conflict).
NOTE: Shared libraries are now provided separately for each ToolKit module
-
DigitalUnix
Libraries:
ospace.st.a - (include ${TOOLKIT}/config/define.st.cfg file)
ospace.mt.a - (include
${TOOLKIT}/config/define.mt.cfg file)
ospace.altstd.mt.a - (include
${TOOLKIT}/config/define.altstd.mt.cfg file)
Shared libraries exist
-
HP
Libraries:
ospace.st.a - (include ${TOOLKIT}/config/define.st.cfg file)
ospace.mt.a - (include
${TOOLKIT}/config/define.mt.cfg file)
ospace.altstd.mt.a - (include
${TOOLKIT}/config/define.altstd.mt.cfg file)
Shared libraries exist
-
AIX - problems to compile the library on all 4.x AIX versions. No
shared library, the archive one is incomplete.
Libraries:
ospace.st.a - (include ${TOOLKIT}/config/define.st.cfg file)
ospace.mt.a - (include ${TOOLKIT}/config/define.mt.cfg file)
-
NT, MS VC++ 5.0 Service Pack 2
ToolKit it installed on NICE, in the directory
Z:\P32\lhcxx\specific\Windows_NT\2.1\ToolKit. This is
the original installation from the CD with precompiled
static and dynamic libraries. ObjectSpace provides example MSVC++
projects to link with them.
Libraries:
single-threaded - (include ${TOOLKIT}/config/define.st.cfg file)
multi-threaded - (include ${TOOLKIT}/config/define.mt.cfg file)
single-threaded, native STL - (include ${TOOLKIT}/config/define.altstd.st.cfg file)
multi-threaded, native STL- (include ${TOOLKIT}/config/define.altstd.mt.cfg file)
multi-threaded, debug
multi-threaded, native STL, debug
The libraries are compatible with MS VC++ 6.0.
Zipped copy of the installation is available in the LHC++ export directory.
-
NT, MS VC++ 6.0 Service Pack 2
ToolKit it installed on NICE, in the directory
Z:\P32\lhcxx\specific\Windows_NT\2.1.1\ToolKit.
Libraries:
as above, but the filenames do not contain compailer version any more.
back to top of page
Known bugs and problems
-
All - iterators do not have the arrow operator. This is due to Solaris
C++ V4.2 compiler that can't compile them correctly. In
result this operator is disabled.
Use (*i). instead.
-
All - there was a bug on Linux that crashed programs using
os_list of strings. It has been fixed for Linux, please
report if you experience it on other platforms
back to top of page
Fixed bugs
-
Linux - list<> class has a wrong type of internal node
allocator. This causes crashes in some cases - e.g. a
list of strings. I have written an experimantal fix to
this problem - it has been accepted by ObectSpace and is
now enabled.
-
Linux - the library originally did not compile without NO_ALLOCATORS
flag.
back to top of page
Objectivity/DB and persistent STL
Objectivity/DB provides persistent and transient STL collection classes. They
are implemented on the base of ObjectSpace ToolKit STL. An
Objectivity application using persisten STL will automatically get the
transient part as well. It is possible to use the "full" ObjectSpace
ToolKit in such an application, but following conditions have to be
met:
-
The include path and library of the Objectivity ToolKit has to be
before the path and library of the ObjectSpace ToolKit
-
The ToolKit configuration file has to be define.mt.cfg
Local installation tips
ToolKit installation kits are available from the LHC++ export area
(see access rules). But the recommended way
is to take (also from the export area) the zip/tar file containing a
copy of CERN installation and unpack it to a local disk.
CERN Program
Library