Provided by: libmongoc-doc_1.21.0-1build1_all bug

NAME

       mongoc_installing - Installing the MongoDB C Driver (libmongoc) and BSON library (libbson)

       The  following  guide  will  step  you  through  the process of downloading, building, and installing the
       current release of the MongoDB C Driver (libmongoc) and BSON library (libbson).

SUPPORTED PLATFORMS

       The MongoDB C Driver is continuously tested on a variety of platforms including:

       • Archlinux

       • Debian 9.2, 10.0

       • macOS 10.14

       • Microsoft Windows Server 2008, 2016

       • RHEL 6.2, 7.0, 7.1, 8.2

       • Ubuntu 16.04, 18.04

       • Clang 3.4, 3.5, 3.7, 3.8, 6.0

       • GCC 4.8, 4.9, 5.4, 6.3, 8.2, 8.3

       • MinGW-W64

       • Visual Studio 2013, 2015, 2017

       • x86, x86_64, ARM (aarch64), Power8 (ppc64le), zSeries (s390x)

INSTALL LIBMONGOC WITH A PACKAGE MANAGER

       Several Linux distributions provide packages  for  libmongoc  and  its  dependencies.  One  advantage  of
       installing  libmongoc  with  a  package  manager  is  that  its  dependencies (including libbson) will be
       installed automatically. If you choose to install libmongoc from distribution packages, use  the  package
       manager to confirm the version being installed is sufficient for your needs.

       The libmongoc package is available on recent versions of Debian and Ubuntu.

          $ apt-get install libmongoc-1.0-0

       On Fedora, a mongo-c-driver package is available in the default repositories and can be installed with:

          $ dnf install mongo-c-driver

       On  recent  Red Hat systems, such as CentOS and RHEL 7, a mongo-c-driver package is available in the EPEL
       repository.        To        check        which         version         is         available,         see
       https://apps.fedoraproject.org/packages/mongo-c-driver. The package can be installed with:

          $ yum install mongo-c-driver

       On macOS systems with Homebrew, the mongo-c-driver package can be installed with:

          $ brew install mongo-c-driver

INSTALL LIBBSON WITH A PACKAGE MANAGER

       The  libbson  package  is  available  on  recent  versions  of  Debian  and Ubuntu. If you have installed
       libmongoc, then libbson will have already been installed as a dependency. It is also possible to  install
       libbson without libmongoc.

          $ apt-get install libbson-1.0-0

       On Fedora, a libbson package is available in the default repositories and can be installed with:

          $ dnf install libbson

       On  recent  Red  Hat  systems,  such  as  CentOS  and  RHEL 7, a libbson package is available in the EPEL
       repository. To check which version  is  available,  see  https://apps.fedoraproject.org/packages/libbson.
       The package can be installed with:

          $ yum install libbson

BUILD ENVIRONMENT

   Build environment on Unix
   Prerequisites for libmongoc
       OpenSSL  is  required  for  authentication  or  for  TLS connections to MongoDB. Kerberos or LDAP support
       requires Cyrus SASL.

       To install all optional dependencies on RedHat / Fedora:

          $ sudo yum install cmake openssl-devel cyrus-sasl-devel

       On Debian / Ubuntu:

          $ sudo apt-get install cmake libssl-dev libsasl2-dev

       On FreeBSD:

          $ su -c 'pkg install cmake openssl cyrus-sasl'

   Prerequisites for libbson
       The only prerequisite for building libbson is cmake. The command lines above can be adjusted  to  install
       only cmake.

   Build environment on macOS
       Install the XCode Command Line Tools:

          $ xcode-select --install

       The cmake utility is also required. First install Homebrew according to its instructions, then:

          $ brew install cmake

   Build environment on Windows with Visual Studio
       Building  on Windows requires Windows Vista or newer and Visual Studio 2010 or newer. Additionally, cmake
       is required to generate Visual Studio project files.  Installation of  these  components  on  Windows  is
       beyond the scope of this document.

   Build environment on Windows with MinGW-W64 and MSYS2
       Install MSYS2 from msys2.github.io. Choose the x86_64 version, not i686.

       Open the MingGW shell with c:\msys64\ming64.exe (not the msys2_shell). Install dependencies:

          $ pacman --noconfirm -Syu
          $ pacman --noconfirm -S mingw-w64-x86_64-gcc mingw-w64-x86_64-cmake
          $ pacman --noconfirm -S mingw-w64-x86_64-extra-cmake-modules make tar
          $ pacman --noconfirm -S mingw64/mingw-w64-x86_64-cyrus-sasl

CONFIGURING THE BUILD

       Before building libmongoc and/or libbson, it is necessary to configure, or prepare, the build.  The steps
       to prepare the build depend on how you obtained the source code and the build platform.

   Preparing a build from a release tarball
       The  most  recent  release of libmongoc and libbson, both of which are included in mongo-c-driver, can be
       downloaded here. The instructions in this document utilize cmake's out-of-source build  feature  to  keep
       build artifacts separate from source files. While the $ prompt is used throughout, the instructions below
       will  work  on  Linux, macOS, and Windows (assuming that CMake is in the user's shell path in all cases).
       See the subsequent sections for additional platform-specific instructions.

       The following snippet will download and extract the driver, and configure it:

          $ wget https://github.com/mongodb/mongo-c-driver/releases/download/1.21.0/mongo-c-driver-1.21.0.tar.gz
          $ tar xzf mongo-c-driver-1.21.0.tar.gz
          $ cd mongo-c-driver-1.21.0
          $ mkdir cmake-build
          $ cd cmake-build
          $ cmake -DENABLE_AUTOMATIC_INIT_AND_CLEANUP=OFF ..

       The -DENABLE_AUTOMATIC_INIT_AND_CLEANUP=OFF option is recommended, see init-cleanup. Another useful cmake
       option is -DCMAKE_BUILD_TYPE=Release for a release optimized build  and  -DCMAKE_BUILD_TYPE=Debug  for  a
       debug build. For a list of all configure options, run cmake -L ...

       If  cmake  completed  successfully,  you  will  see a considerable amount of output describing your build
       configuration. The final line of output should look something like this:

          -- Build files have been written to: /home/user/mongo-c-driver-1.21.0/cmake-build

       If cmake concludes with anything different, then it is likely an error occurred.

       mongo-c-driver contains a copy of libbson, in case your system does not already have  libbson  installed.
       The configuration will detect if libbson is not installed and use the bundled libbson.

       Additionally, it is possible to build only libbson by setting the -DENABLE_MONGOC=OFF option:

          $ cmake -DENABLE_AUTOMATIC_INIT_AND_CLEANUP=OFF -DENABLE_MONGOC=OFF ..

       A  build configuration description similar to the one above will be displayed, though with fewer entries.
       Once the configuration is complete, the selected items can be built and installed with these commands:

   Preparing a build from a git repository clone
       Clone the repository and prepare the build on the current branch or a particular release tag:

          $ git clone https://github.com/mongodb/mongo-c-driver.git
          $ cd mongo-c-driver
          $ git checkout 1.21.0  # To build a particular release
          $ python build/calc_release_version.py > VERSION_CURRENT
          $ mkdir cmake-build
          $ cd cmake-build
          $ cmake -DENABLE_AUTOMATIC_INIT_AND_CLEANUP=OFF ..

   Preparing a build on Windows with Visual Studio
       On the Windows platform with Visual Studio, it may be necessary to specify the CMake  generator  to  use.
       This  is  especially  important  if  multiple versions of Visual Studio are installed on the system or if
       alternate build tools (e.g., MinGW, MSYS2, Cygwin, etc.) are  present  on  the  system.   Specifying  the
       generator  will  ensure  that the build configuration is known with certainty, rather than relying on the
       toolchain that CMake happens to find.

       Start by generating Visual Studio project files. The following  assumes  you  are  compiling  for  64-bit
       Windows  using  Visual  Studio  2015  Express,  which can be freely downloaded from Microsoft. The sample
       commands utilize cmake's out-of-source build feature to keep build artifacts separate from source files.

          $ cd mongo-c-driver-1.21.0
          $ mkdir cmake-build
          $ cd cmake-build
          $ cmake -G "Visual Studio 14 2015 Win64" \
              "-DCMAKE_INSTALL_PREFIX=C:\mongo-c-driver" \
              "-DCMAKE_PREFIX_PATH=C:\mongo-c-driver" \
              ..

       (Run cmake -LH .. for a list of other options.)

       To see a complete list of the CMake generators available on your specific  system,  use  a  command  like
       this:

          $ cmake --help

EXECUTING A BUILD

   Building on Unix, macOS, and Windows (MinGW-W64 and MSYS2)
          $ cmake --build .
          $ sudo cmake --build . --target install

       (Note  that  the  sudo  command may not be applicable or available depending on the configuration of your
       system.)

       In the above commands, the first relies on the default target which  builds  all  configured  components.
       For  fine  grained  control  over  what  gets  built,  the  following  command can be used (for Ninja and
       Makefile-based build systems) to list all available targets:

          $ cmake --build . help

   Building on Windows with Visual Studio
       Once the project files are generated, the project can be opened directly in  Visual  Studio  or  compiled
       from the command line.

       Build using the CMake build tool mode:

          $ cmake --build . --config RelWithDebInfo

       Visual  Studio's  default  build  type  is  Debug,  but  we recommend a release build with debug info for
       production use. Now that libmongoc and libbson are compiled, install them. Components will  be  installed
       to the path specified by CMAKE_INSTALL_PREFIX.

          $ cmake --build . --config RelWithDebInfo --target install

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

       For Visual Studio 2019 (16.4 and newer), this command can be used to list all available targets:

          $ cmake --build . -- /targets

       Alternately, you can examine the files matching the glob *.vcxproj in the cmake-build directory.

       To use the driver libraries in your program, see visual-studio-guide.

   Generating the documentation
       Install Sphinx, then:

          $ cmake -DENABLE_MAN_PAGES=ON -DENABLE_HTML_DOCS=ON ..
          $ cmake --build . --target mongoc-doc

       To build only the libbson documentation:

          $ cmake -DENABLE_MAN_PAGES=ON -DENABLE_HTML_DOCS=ON ..
          $ cmake --build . --target bson-doc

       The -DENABLE_MAN_PAGES=ON and -DENABLE_HTML_DOCS=ON can also be added as options to a normal build from a
       release tarball or from git so that the documentation is built at the same time as other components.

   Uninstalling the installed components
       There  are  two  ways  to  uninstall the components that have been installed.  The first is to invoke the
       uninstall program directly.  On Linux/Unix:

          $ sudo /usr/local/share/mongo-c-driver/uninstall.sh

       On Windows:

          $ C:\mongo-c-driver\share\mongo-c-driver\uninstall.bat

       The second way to uninstall is from within the build directory, assuming that it is  in  the  exact  same
       state as when the install command was invoked:

          $ sudo cmake --build . --target uninstall

       The second approach simply invokes the uninstall program referenced in the first approach.

   Dealing with Build Failures
       If     your     attempt     to    build    the    C    driver    fails,    please    see    the    README
       <https://github.com/mongodb/mongo-c-driver#how-to-ask-for-help>   for    instructions    on    requesting
       assistance.

ADDITIONAL OPTIONS FOR INTEGRATORS

       In  the  event  that you are building the BSON library and/or the C driver to embed with other components
       and you wish to avoid the potential for collision with components installed from a standard build or from
       a distribution package manager, you can make use of the BSON_OUTPUT_BASENAME  and  MONGOC_OUTPUT_BASENAME
       options to cmake.

          $ cmake -DBSON_OUTPUT_BASENAME=custom_bson -DMONGOC_OUTPUT_BASENAME=custom_mongoc ..

       The  above  command  would produce libraries named libcustom_bson.so and libcustom_mongoc.so (or with the
       extension appropriate for the build platform).  Those libraries could be  placed  in  a  standard  system
       directory or in an alternate location and could be linked to by specifying something like -lcustom_mongoc
       -lcustom_bson on the linker command line (possibly adjusting the specific flags to those required by your
       linker).

AUTHOR

       MongoDB, Inc

COPYRIGHT

       2017-present, MongoDB, Inc

1.21.0                                            Feb 09, 2022                              MONGOC_INSTALLING(3)