Keywords: doc

Next: C++ mapping Up: Compiler and Linker Wrappers Previous: Compiler and Linker Wrappers

## Examples

Let us consider building a simple MICO-aplication that consists of two files: `account.idl` and `main.cc`. Here is how to build `account`:

      idl account.idl
      mico-c++ -I. -c account.cc -o account.o
      mico-c++ -I. -c main.cc -o main.o
      mico-ld account.o main.o -o account -lmico2.2.3

As a second example let us consider building a dynamically loadable module and a client program that loads the module. We have three source files now: `account.idl`, `client.cc`, and `module.cc`:

      idl account.idl
      mico-shc++ -I. -c account.cc -o account.o
      mico-shc++ -I. -c module.cc -o module.o
      mico-shld -o module module.o account.o -lmico2.2.3

      mico-c++ -I. -c client.cc -o client.o
      mico-ld account.o client.o -o client -lmico2.2.3

Note that

- all files that go into the module must be compiled using `mico-shc++` instead of `mico-c++`.
- `module` was specified as the output file, but `mico-shld` will generate `module.so` (the extension depends on your system).
- `account.o` must be linked both into the module and the client but is compiled only once using `mico-shc++`. One would expect that `account.cc` had to be compiled twice: once with `mico-c++` for use in the client and once with `mico-shc++` for use in the module. The rule is that using `mico-shc++` where `mico-c++` should be used does not harm, but not the other way around.