# Installing Libbson

The following guide will step you through the process of downloading, building, and installing the current release of the Libbson.

## Supported Platforms

Libbson currently supports the following operating systems and CPU architectures.

### Operating Systems | ### CPU Architectures | ### Compiler Toolchain
GNU/Linux Solaris 10 and 11 Mac OS X 10.6 and newer Windows Vista, 7, and 8 FreeBSD OpenBSD 5.4 Dragonfly BSD | x86 and x86_64 ARM PPC SPARC | GCC 4.1 and newer Clang 3.3 and newer Microsoft Visual Studio 2010 Express Oracle Solaris Studio 12 MinGW

## Installing from Source

The following instructions are for UNIX-like systems such as GNU/Linux, FreeBSD, and Solaris. To build on Windows, see the instructions for Building on Windows.

The most recent release of the libbson is 1.1.2 and can be downloaded here. The following snippet will download and extract the current release of the driver.

    $ wget https://github.com/mongodb/libbson/releases/download/1.1.2/libbson-1.1.2.tar.gz
    $ tar -xzf libbson-1.1.2.tar.gz
    $ cd libbson-1.1.2/

Minimal dependencies are needed to build Libbson. On UNIX-like systems, pthreads (the POSIX threading library) is required.

Make sure you have access to a supported toolchain such as GCC, Clang, SolarisStudio, or MinGW. Optionally, pkg-config can be used if your system supports it to simplify locating proper compiler and linker arguments when compiling your program.

The following will configure for a typical 64-bit Linux system such as RedHat Enterprise Linux 6 or CentOS 6. Note that not all systems place 64-bit libraries in /usr/lib64. Check your system to see what the convention is if you are building 64-bit versions of the library.

    $ ./configure --prefix=/usr --libdir=/usr/lib64

If configure completed successfully, you'll see something like the following describing your build configuration.

    libbson was configured with the following options:

    Build configuration:
      Enable debugging (slow)                          : no
      Compile with debug symbols (slow)                : no
      Enable GCC build optimization                    : yes
      Enable automatic binary hardening                : yes
      Code coverage support                            : no
      Cross Compiling                                  : no
      Libbson                                          : bundled

    Documentation:
      man                                              : yes
      HTML                                             : yes
      Yelp                                             : no

    Bindings:
      Python (experimental)                            : no

We can now build libbson with the venerable make program.

    $ make

You can optionally build code objects in parallel using the -j option to GNU make. Some implementations of make do not support this option, such as Sun's make on Solaris 10. To build in parallel on an 8 core machine, you might use:

    $ gmake -j8

To install the driver, we use make with the install target.

    $ sudo make install

On systems that do not support the sudo command, we can use su -c 'make install'.

## Building on Windows

Building on Windows requires Windows Vista or newer and Visual Studio 2010 or newer. Additionally, cmake is required to generate Visual Studio project files.

Let's start by generating Visual Studio project files for libbson. The following assumes we are compiling for 64-bit Windows using Visual Studio 2010 Express which can be freely downloaded from Microsoft.

    > cd libbson-1.1.2
    > cmake -G "Visual Studio 2010 Win64" "-DCMAKE_INSTALL_PREFIX=C:\libbson"
    > msbuild.exe ALL_BUILD.vcxproj
    > msbuild.exe INSTALL.vcxproj

You should now see libbson installed in C:\libbson