Installing the MongoDB C Driver

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

Supported Platforms

The MongoDB C Driver is continuously tested on GNU/Linux, Windows 7, Mac OS X 10.10, and Solaris 11 (Intel and Sparc). GCC, Clang, and Visual Studio 2013 compilers are continuously tested.

The driver supports the following operating systems and CPU architectures:

Operating Systems

CPU Architectures

Compiler Toolchain

  • GNU/Linux

  • Solaris 11

  • Mac OS X 10.6 and newer

  • Windows Vista, 7, and 8

  • FreeBSD

  • x86 and x86_64

  • ARM

  • PPC

  • SPARC

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 libmongoc is 1.2.0 and can be downloaded here. The following snippet will download and extract the current release of the driver.

$ wget https://github.com/mongodb/mongo-c-driver/releases/download/1.2.0/mongo-c-driver-1.2.0.tar.gz
$ tar -xzf mongo-c-driver-1.2.0.tar.gz
$ cd mongo-c-driver-1.2.0/

Minimal dependencies are needed to build the MongoDB C driver. Optionally, if you want Kerberos (GSSAPI) or SSL support, you need to install libsasl2 and OpenSSL libraries and development headers respectively.

In MongoDB 3.0 and later the default authentication mechanism is SCRAM-SHA-1. The MongoDB C Driver must be built with OpenSSL to use SCRAM-SHA-1 authentication, since the driver uses hash algorithms from the OpenSSL library to implement SCRAM-SHA-1, even if it connects to MongoDB over a non-SSL connection.

Make sure you have access to a supported toolchain such as GCC, Clang, Solaris Studio, 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 you require SSL add --enable-ssl to the above configuration. This will require the openssl-devel on RedHat Entrprise Linux. Other Linux-based operating systems may have another name for this package such as libssl-dev on Debian.

If you require Kerberos add --enable-sasl to the above configuration. This will require the cyrus-sasl-devel on RedHat Entrprise Linux. Other Linux-based operating systems may have another name for this package.

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

libmongoc 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
Fast counters                                    : no
SASL                                             : sasl2
SSL                                              : yes
Libbson                                          : bundled

Documentation:
Generate man pages                               : yes
Install man pages                                : yes

We can now build the driver 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. 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, a dependency of the C driver. The following assumes we are compiling for 64-bit Windows using Visual Studio 2010 Express which can be freely downloaded from Microsoft.

cd mongo-c-driver-1.2.0\src\libbson
cmake -G "Visual Studio 10 Win64" "-DCMAKE_INSTALL_PREFIX=C:\mongo-c-driver"

Now that we have project files generated, we can either open the project in Visual Studio or compile from the command line. Let's build using the command line program msbuild.exe

msbuild.exe ALL_BUILD.vcxproj

Now that libbson is compiled, let's install it using msbuild. It will be installed to the path specified by CMAKE_INSTALL_PREFIX.

msbuild.exe INSTALL.vcxproj

You should now see libbson installed in C:\mongo-c-driver

Now let's do the same for the MongoDB C driver.

cd mongo-c-driver-1.2.0-rc0
cmake -G "Visual Studio 2010 Win64" "-DCMAKE_INSTALL_PREFIX=C:\mongo-c-driver" "-DBSON_ROOT_DIR=C:\mongo-c-driver"
msbuild.exe ALL_BUILD.vcxproj
msbuild.exe INSTALL.vcxproj

All of the MongoDB C Driver's components will now be found in C:\mongo-c-driver.