c++boostubuntu-9.04

Using Boost on ubuntu


I've heard a lot of good comments about Boost in the past and thought I would give it a try. So I downloaded all the required packages from the package manager in Ubuntu 9.04. Now I'm having trouble finding out how to actually use the darn libraries.

Does anyone know of a good tutorial on Boost that goes all the way from Hello World to Advanced Topics, and also covers how to compile programs using g++ on ubuntu?


Solution

  • Agreed; the boost website has good tutorials for the most part, broken down by sub-library.

    As for compiling, a good 80% of the library implementation is defined in the header files, making compiling trivial. for example, if you wanted to use shared_ptr's, you'd just add

    #include <boost/shared_ptr.hpp>
    

    and compile as you normally would. No need to add library paths to your g++ command, or specify -llibboost. As long as the boost directory is in your include path, you're all set.

    From the boost documentation:

    The only libraries that need to be compiled and linked are the following:The only Boost libraries that must be built separately are:

    • Boost.Filesystem
    • Boost.IOStreams
    • Boost.ProgramOptions
    • Boost.Python (see the Boost.Python build documentation before building and installing it)
    • Boost.Regex
    • Boost.Serialization
    • Boost.Signals
    • Boost.Thread
    • Boost.Wave

    A few libraries have optional separately-compiled binaries:

    • Boost.DateTime has a binary component that is only needed if you're using its to_string/from_string or serialization features, or if you're targeting Visual C++ 6.x or Borland.
    • Boost.Graph also has a binary component that is only needed if you intend to parse GraphViz files.
    • Boost.Test can be used in “header-only” or “separately compiled” mode, although separate compilation is recommended for serious use.

    So, if you're using one of the listed libraries, use the Getting Started guide to, well, get you started on compiling and linking to Boost.