Some of the eXtremeDB libraries contain references to functions in other libraries which create inter-dependencies. For example, the core library
libmcolib.a
refers to the transaction manager library (libmcomursiw.a
orlibmcomvcc.a
) and the transaction manager library refers back tolibmcolib.a
. Some C/C++ compilers (in particular gcc and Diab) are sensitive to the order of the libraries enumerated in the link list. For these compilers, these inter-dependencies are resolved by specifying the libraries in a specific order and it is necessary to specify the same library more than once in the link list as seen in the following examples (note that a description of the individual libraries can be viewed in the package contents topic):An in-memory database application using MURSIW and snapshot save/load functionality
An application that uses a database in conventional memory, the
MURSIW
transaction manager, uses the C runtime and the POSIX based synchronization primitives, and uses the snapshot functionsmco_db_save()
andmco_db_load()
would have the following link list:-lmcolib -lmcovtmem -lmcoseri -lmcoslnxp -lmcomconv -lmcotmursiw -lmcolib -lmcouwrt -lmcotrace -lmcosallatches -lmcosalatomic -lmcosalsmp -lmcosaltimer -lmcosalmem -lmcocryptaesA persistent database application using MVCC and snapshot save/load functionality
An application that uses persistent classes, the
MVCC
transaction manager, uses the C runtime and the POSIX based synchronization primitives, and uses the functionsmco_db_save()
and/ormco_db_load()
would have the following link list:-lmcolib -lmcovtdsk -lmcoseri -lmcoslnxp -lmcomconv -lmcotmvcc -lmcolib -lmcofu98 -lmcouwrt -lmcotrace -lmcosallatches -lmcosalatomic -lmcosalsmp -lmcosaltimer -lmcosalmem -lmcocryptaesA persistent shared-memory database application using MVCC
An application using IPC shared memory with persistent classes would have the following link list:
-lmcolib -lmcovtdsk -lmcoslnx -lmcomipc -lmcotmvcc -lmcolib -lmcofu98 -lmcouwrt -lmcotrace -lmcosallatches -lmcosalatomic -lmcosalsmp -lmcosaltimer -lmcosalmem -lmcocryptaesAn application using debug libraries
The same persistent shared-memory database application during the development cycle would link with the following “debug” libraries:
--lmcolib_debug -lmcovtdsk_debug -lmcoslnx_debug -lmcomipc_debug -lmcotmvcc_debug -lmcolib_debug -lmcofu98_debug -lmcouwrt_debug -lmcotrace_debug -lmcosallatches_debug -lmcosalatomic_debug -lmcosalsmp -lmcosaltimer_debug -lmcosalmem_debug -lmcocryptaes_debugNote that the SDK sample projects give more examples of which libraries to include for the different eXtremeDB features.