Compiling C++ or C software to use libSBML is usually a matter of supplying certain options during compilation and linking. Let DIR stand for the directory used during the libSBML configuration step as the value of the `--prefix=`DIR option (if you used `configure` to configure libSBML) or `CMAKE_INSTALL_PREFIX` (if you used CMake). There are two main sets of settings on Unix-like systems such as Linux:

- The flag `-IDIR/include` needs to be supplied to the compiler. In addition, it may be necessary to supply a second `-I` flag with the directory containing the include files of the XML parser being used by libSBML. For example, if you are using the Xerces XML parser and you compiled and installed Xerces in `/usr/local`, then when compiling your software to use libSBML, you will also need to add the flag `-I/usr/local/include`.

- The flags `-LDIR/lib -lsbml -lstdc++ -lm` need to be supplied to the compiler or linker. In addition, you may need to supply a corresponding `-L` flag value to tell the linker where to find the XML parser library being used by libSBML.

If you have the `pkg-config` utility, the steps above can be substantially simplified. First, make sure that your `PKG_CONFIG_PATH` environment variable includes the path to the directory DIR`/lib/pkgconfig` (which is the directory where the file `libsbml.pc` will be installed by libSBML's `make install` step). Then, you can run `pkg-config` with the `--cflags` and/or `--libs` flags in your compilation/linking command. Here is an example:

    g++ `pkg-config --cflags --libs libsbml` myprogram.cpp

Note the use of the backward quote in the shell command above; it has the effect of running the command `pkg-config --cflags --libs libsbml` and substituting in place the flags returned by the command.