Docs Menu
Docs Home
/ /

Construyendo las bibliotecas de controladores C desde el código fuente

Esta página detalla cómo descargar, descomprimir, configurar y compilar libbson y libmongoc de su forma de código fuente original.

Tip

Información extra

Los menús desplegables (como este) contienen información adicional y detalles explicativos que no son necesarios para completar el tutorial, pero pueden ser útiles para lectores curiosos y usuarios más avanzados que desean una explicación del significado de ciertos pasos del tutorial.

La siguiente página utiliza algunas "variables" con nombre que debe decidir previamente. Si ve un valor de este tipo en un paso del tutorial, debe sustituirlo en ese paso.

Tip

Antes de compilar, conviene comprobar que se está ejecutando en una plataforma compatible. Para ver la lista de plataformas compatibles, consulte Página de soporte de laplataforma mongo-c-driver.

Antes de comenzar, tenga en cuenta qué versión de mongo-c-driver descargará. Puede encontrar una lista de las versiones disponibles en La página de etiquetas del repositorio de GitHub. (La versión actual de esta documentación 1 276es..).

Para el resto de esta página, $VERSION se referirá al número de versión de mongo-c-driver que construirás para este tutorial.

Hay dos métodos principales recomendados para obtener el código fuente mongo-c-driver:

  1. Clonar el repositorio usando git (recomendado). (Ver más abajo)

  2. Descargue el archivo fuente de una versión específica. (Ver más abajo)

Importante

Se recomienda encarecidamente que los nuevos usuarios utilicen una versión estable del controlador, en lugar de compilar desde una rama de desarrollo. Al git clone usar o descargar un archivo del repositorio, asegúrese de especificar una etiqueta de lanzamiento (por ejemplo, con el --branch argumento de Git).

Usando Git, el repositorio del controlador C se puede clonar desde la URL de GitHub https://github.com/mongodb/mongo-c-driver.git. Las etiquetas de Git para las versiones publicadas se nombran según la versión a la que corresponden (p. ej., "..1 276"). Para clonar el repositorio mediante la línea de comandos, se puede usar el siguiente comando:

$ git clone https://github.com/mongodb/mongo-c-driver.git --branch="$VERSION" "$SOURCE"

Tip

A pesar del nombre, el argumento --branch de git-clone también puede usarse para clonar desde etiquetas del repositorio.

Se puede obtener una instantánea archivada del repositorio en la página de lanzamientos de GitHub. El mongo-c-driver-x.y.z.tar.gz archivo adjunto a cualquier lanzamiento contiene el conjunto mínimo de archivos necesarios para la compilación.

## Download using wget:
$ wget "https://github.com/mongodb/mongo-c-driver/archive/refs/tags/$VERSION.tar.gz" \
--output-document="mongo-c-driver-$VERSION.tar.gz"
## Extract using tar:
$ tar xf "mongo-c-driver-$VERSION.tar.gz"
## Using curl:
$ curl "https://github.com/mongodb/mongo-c-driver/archive/refs/tags/$VERSION.tar.gz" \
--output="mongo-c-driver-$VERSION.tar.gz"
## Extract using tar:
$ tar xf "mongo-c-driver-$VERSION.tar.gz"
## Use Invoke-WebRequest:
PS> $url = "https://github.com/mongodb/mongo-c-driver/archive/refs/tags/$VERSION.zip"
PS> $file = "mongo-c-driver-$VERSION.zip"
PS> Invoke-WebRequest -UseBasicParsing -Uri $url -OutFile $file
## Extract using Expand-Archive:
PS> Expand-Archive mongo-c-driver-$VERSION.zip

Los comandos anteriores crearán un nuevo directorio mongo-c-driver-$VERSION dentro del directorio donde se ejecutó el tar Expand-Archive comando / (nota: PowerShell creará un subdirectorio intermedio adicional con el mismo nombre). Este directorio es la raíz del árbol de código fuente del controlador (al que nos referimoscomo $SOURCE en estos documentos). El $SOURCE directorio debe contener el CMakeLists.txt archivo de nivel superior.

Para poder desarrollar el proyecto es necesario cumplir algunos requisitos previos.

libmongoc Los libbson proyectos y utilizan CMake para la configuración de la compilación.

Nota

Es muy recomendable (aunque no obligatorio) que descargue la última versión estable de CMake disponible para su plataforma.

Tip

Obtener la última versión de CMake

Se puede obtener una nueva versión estable de CMake desde la página de descargas de CMake.

Para Windows y macOS, simplemente descargue CMake .msi / .dmg (no .zip / .tar.gz) y úselo para instalar CMake.

En Linux, descargue el script de shell autoextraíble (que termina en .sh) y ejecútelo con la utilidad sh, pasando los argumentos adecuados para realizar la instalación. Por ejemplo, con CMake 3.27.0 en la plataforma x86_64, se puede usar el siguiente comando en el script cmake-3.27.0-linux-x86_64.sh:

$ sh cmake-3.27.0-linux-x86_64.sh --prefix="$HOME/.local" --exclude-subdir --skip-license

Suponiendo que $HOME/.local/bin está en su lista $PATH, el comando cmake para 3.27.0 estará disponible.

La opción --help se puede pasar al script de shell para obtener más información.

En el resto de esta página, se asumirá que cmake está disponible como comando en la variable de entorno PATH y puede ejecutarse como "cmake" desde un shell. Puede comprobarlo solicitando --version a CMake desde la línea de comandos:

$ cmake --version
cmake version 3.21.4
CMake suite maintained and supported by Kitware (kitware.com/cmake).

Nota

Si libbson solo pretende compilar, CMake es suficiente. Las funciones adicionales del controlador C pueden requerir la instalación de dependencias externas adicionales, pero no nos ocuparemos de ellas aquí.

Importante

Si está compilando con Xcode []1 o Visual Studio [],2 es posible que necesite ejecutar CMake desde un entorno especial en el que esté disponible la cadena de herramientas correspondiente.

Sea $BUILD la ruta $SOURCE/_build. Este será el directorio donde CMake escribirá los archivos compilados.

Con el directorio de origen de mongo-c-driver en $SOURCE y el directorio de compilación $BUILD, se puede ejecutar el siguiente comando desde una línea de comandos para configurar el proyecto con libbson y libmongoc:

$ cmake -S $SOURCE -B $BUILD \
-D ENABLE_EXTRA_ALIGNMENT=OFF \
-D ENABLE_AUTOMATIC_INIT_AND_CLEANUP=OFF \
-D CMAKE_BUILD_TYPE=RelWithDebInfo \
-D BUILD_VERSION="$VERSION" \
-D ENABLE_MONGOC=OFF

Si se satisfacen todas las dependencias, el comando anterior debería tener éxito y finalizar con:

$ cmake …
## … (Lines of output) …
-- Generating done
-- Build files have been written to: $BUILD

Si la configuración falló con un error, consulte la salida de CMake para ver los mensajes de error y la información. Asegúrese de que la configuración se realice correctamente antes de continuar.

Tip

¿Qué significan estos argumentos de CMake?

El BUILD_VERSION establece el número de versión que se incluirá en los resultados de la compilación. Debe tener el mismo valor que la versión del controlador fuente descargada en la sección "Obtención del código fuente".

ENABLE_EXTRA_ALIGNMENT y ENABLE_AUTOMATIC_INIT_AND_CLEANUP forman parte de mongo-c-driver y corresponden a funciones obsoletas que solo están habilitadas de forma predeterminada por motivos de compatibilidad con ABI. Se recomienda encarecidamente deshabilitarlas siempre que sea posible.

El argumento ENABLE_MONGOC=OFF deshabilitó la creación de libmongoc. La crearemos en la siguiente sección.

La CMAKE_BUILD_TYPE opción indica a CMake qué variante de código se generará. En el caso RelWithDebInfo de, se generarán binarios optimizados, pero se incluirá información de depuración.CMAKE_BUILD_TYPE no afecta a los generadores Multi-Config (por ejemplo, Visual Studio), que utilizan la --config opción al compilar/instalar.

Después de configurar exitosamente el proyecto, la compilación se puede ejecutar usando CMake:

$ cmake --build $BUILD --config RelWithDebInfo --parallel

Si la configuración es correcta y se cumplen todas las dependencias, el comando anterior debería compilar y vincular los componentes configurados. Si el comando falla, es probable que haya un error en su entorno o que esté utilizando una plataforma no compatible o no probada. Consulte la salida de la herramienta de compilación para obtener más información.

Tip

La opción --config

La opción --config se utiliza para establecer la configuración de compilación que se usará en el caso de generadores Multi-Config (por ejemplo, Visual Studio). No tiene efecto en otros generadores, que utilizan CMAKE_BUILD_TYPE.

Sea $PREFIX la ruta $SOURCE/_install. Podemos usar CMake para instalar los resultados generados:

$ cmake --install "$BUILD" --prefix "$PREFIX" --config RelWithDebInfo

Este comando instalará los resultados de compilación mongo-c-driver en el directorio $PREFIX.

Tip

La opción --config

La opción --config solo se usa para generadores Multi-Config (p. ej., Visual Studio) y, de lo contrario, se ignora. El valor dado para --config debe ser el mismo que el dado para --config con cmake --build.

Tip

El fragmento anterior simplemente instala mongo-c-driver en un subdirectorio del directorio de origen, pero este no es un flujo de trabajo normal. Una vez que se sienta cómodo configurando y mongo-c-driver compilando, la página "Cómo: Instalar libbson/libmongoc desde el código fuente" profundizará en las opciones de instalación desde el código fuente.

Si siguió los pasos anteriores desde la configuración de libbson, el resultado final solo contendrá libbson y no la biblioteca completa del controlador de base de datos de C. La compilación de libmongoc se habilita o deshabilita mediante la ENABLE_MONGOC variable de CMake. Vuelva a ejecutar CMake, pero ENABLE_MONGOC configure TRUE como:

$ cmake -D ENABLE_MONGOC=ON $BUILD

Si el comando anterior funciona correctamente, el proyecto se ha reconfigurado para compilarse libmongoc con. Siga el proceso descrito libmongocen "Compilación del proyecto e instalación de los resultados de la compilación" para compilar e instalar.

[1] Si desea configurar y compilar el proyecto con Xcode, es necesario instalar y habilitar las herramientas de línea de comandos de Xcode en el entorno. Desde un entorno de línea de comandos, ejecute:
$ xcode-select --install
Esto garantizará que los compiladores y enlazadores estén disponibles en su $PATH.
[2] Si desea configurar y compilar el proyecto con Microsoft Visual C++, es posible que deba configurar las herramientas y variables de entorno de Visual C++ al ejecutar cualquier comando de CMake o de compilación. En muchos casos, CMake detectará una instalación de Visual Studio y cargará automáticamente el entorno al ejecutarse. Esta detección automática se puede controlar con las -G opciones, -T y -A de CMake. La -G opción es la más importante, ya que selecciona la versión de Visual Studio que se utilizará. Las versiones de Visual Studio compatibles dependen de la versión de CMake que tengainstalada. Puede encontrar una lista de las versiones compatibles de Visual Studio aquí.Para un mayor control y más opciones de herramientas, se recomienda ejecutar comandos desde Visual Studio Developer PowerShell (preferible) o Developer Command Prompt (heredado). Para obtener más información, consulte: Visual Studio Developer Command Prompt y Developer PowerShell y Usar el conjunto de herramientas de Microsoft C++ desde la línea de comandos en las páginas de documentación de Microsoft Visual Studio.

Volver

Bibliotecas de controladores C

En esta página