# Unix-Linux libraries example configurations

> 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` or `libmcomvcc.a`) and the transaction manager library refers back to `libmcolib.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 functions `mco_db_save()` and `mco_db_load()` would have the following link list:

>         -lmcolib -lmcovtmem -lmcoseri -lmcoslnxp -lmcomconv -lmcotmursiw -lmcolib -lmcouwrt
>         -lmcotrace -lmcosallatches -lmcosalatomic -lmcosalsmp -lmcosaltimer -lmcosalmem -lmcocryptaes

> ## A 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 functions `mco_db_save()` and/or `mco_db_load()` would have the following link list:

>         -lmcolib -lmcovtdsk -lmcoseri -lmcoslnxp -lmcomconv -lmcotmvcc -lmcolib -lmcofu98 -lmcouwrt
>         -lmcotrace -lmcosallatches -lmcosalatomic -lmcosalsmp -lmcosaltimer -lmcosalmem -lmcocryptaes

> ## A 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 -lmcocryptaes

> ## An 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_debug

> Note that the SDK sample projects give more examples of which libraries to include for the different eXtremeDB features.