TvlSim Logo  1.00.0
C++ Simulated Travel-Oriented Distribution System Library
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Linking with TvlSim

Table of Contents

Introdution

There are two convenient methods of linking your programs with the TvlSim library. The first one employs the `pkg-config' command (see http://pkgconfig.freedesktop.org/), whereas the second one uses `tvlsim-config' script. These methods are shortly described below.

Dependencies

The TvlSim library depends on several other C++ components.

StdAir

Among them, as for now, only StdAir has been packaged. The support for StdAir is taken in charge by a dedicated M4 macro file (namely, `stdair.m4'), from the configuration script (generated thanks to `configure.ac').

Other Simulation-Related Components

TvlSim, as shown on the diagram below, depends on

tvlsim_dependencies.png
TvlSim Dependencies

Using the pkg-config command

`pkg-config' is a helper tool used when compiling applications and libraries. It helps you insert the correct compiler and linker options. The syntax of the `pkg-config' is as follows:

pkg-config <options> <library_name>

For instance, assuming that you need to compile an TvlSim based program `my_prog.cpp', you should use the following command:

g++ `pkg-config --cflags tvlsim` -o my_prog my_prog.cpp `pkg-config --libs tvlsim`

For more information see the `pkg-config' man pages.

Using the tvlsim-config script

TvlSim provides a shell script called tvlsim-config, which is installed by default in `$prefix/bin' (`/usr/local/bin') directory. It can be used to simplify compilation and linking of TvlSim based programs. The usage of this script is quite similar to the usage of the `pkg-config' command.

Assuming that you need to compile the program `my_prog.cpp' you can now do that with the following command:

g++ `tvlsim-config --cflags` -o my_prog_opt my_prog.cpp `tvlsim-config --libs`

A list of `tvlsim-config' options can be obtained by typing:

tvlsim-config --help

If the `tvlsim-config' command is not found by your shell, you should add its location `$prefix/bin' to the PATH environment variable, e.g.:

export PATH=/usr/local/bin:$PATH

M4 macro for the GNU Autotools

A M4 macro file is delivered with TvlSim, namely `tvlsim.m4', which can be found in, e.g., `/usr/share/aclocal'. When used by a `configure' script, thanks to he `AM_PATH_TvlSim' macro (specified in the M4 macro file), the following Makefile variables are then defined:

  • `TvlSim_VERSION' (e.g., defined to 0.23.0)
  • `TvlSim_CFLAGS' (e.g., defined to `-I${prefix}/include')
  • `TvlSim_LIBS' (e.g., defined to `-L${prefix}/lib -ltvlsim')

Using TvlSim with dynamic linking

When using static linking some of the library routines in TvlSim are copied into your executable program. This can lead to unnecessary large executables. To avoid having too large executable files you may use dynamic linking instead. Dynamic linking means that the actual linking is performed when the program is executed. This requires that the system is able to locate the shared TvlSim library file during your program execution. If you install the TvlSim library using a non-standard prefix, the `LD_LIBRARY_PATH' environment variable might be used to inform the linker of the dynamic library location, e.g.:

export LD_LIBRARY_PATH=<TvlSim installation prefix>/lib:$LD_LIBRARY_PATH