Compile el controlador Mongo C 1.13.0 en Ubuntu Raspberry Pi

Compile el controlador Mongo C 1.13.0 en Ubuntu Raspberry Pi
  • Sistema operativo: Ubuntu 18.04.4 LTS
  • Núcleo: Linux 5.3.0-1018-raspi2
  • Arquitectura: arm64

Estoy intentando compilar libmongoc 1.13.0 desde la fuente. Estoy construyendo esto en una Raspberry Pi 4 con Ubuntu 18.04.4. corriendo Para el contexto, mi objetivo final es construiresta biblioteca Swift, que depende deMongoSwift, que depende de libmongoc. Estoy compilando la versión 1.13.0 específicamente porque creo que la versión de libmongoc-dev instalada desde apt-get es incorrecta. Cuando intento compilar MongoSwift, aparece un montón de errores (truncados porque publicar el resultado completo activó el filtro de spam):

/home/cooper/backup/CooperKnaak/.build/checkouts/mongo-swift-driver/Sources/MongoSwift/BSON/Overwritable.swift:68:58: error: use of unresolved identifier 'bson_iter_overwrite_oid'
            iter.withMutableBSONIterPointer { iterPtr in bson_iter_overwrite_oid(iterPtr, oidPtr) }
                                                         ^~~~~~~~~~~~~~~~~~~~~~~

Cuando descargo la versión 1.13.0, las bson_iter_overwrite_date_timefunciones parecen estar definidas. Esta parece ser la versión de mi Mac, que construye las bibliotecas Swift correctamente.

He seguido elinstrucciones para instalar el controlador MongoDB C, pero no puedo construir. He instalado las 3 dependencias:

  • cmake: versión 3.10.2-1ubuntu2.18.04.1
  • libssl-dev: versión 1.1.1-1ubuntu2.1~18.04.5
  • libsasl2-dev: 2.1.27~101-g0780600+dfsg-3ubunt

Puedo descargar exitosamente el tarball, crear el cmake-builddirectorio y ejecutar cmake. Pero correr makefalla con

[ 37%] Linking C executable common-operations
libmongoc-1.0.so.0.0.0: undefined reference to `usprep_prepare_61_swift'
libmongoc-1.0.so.0.0.0: undefined reference to `u_strFromUTF8_61_swift'
libmongoc-1.0.so.0.0.0: undefined reference to `usprep_openByType_61_swift'
libmongoc-1.0.so.0.0.0: undefined reference to `u_strToUTF8_61_swift'
libmongoc-1.0.so.0.0.0: undefined reference to `usprep_close_61_swift'
collect2: error: ld returned 1 exit status
src/libmongoc/CMakeFiles/common-operations.dir/build.make:103: recipe for target 'src/libmongoc/common-operations' failed
make[2]: *** [src/libmongoc/common-operations] Error 1
CMakeFiles/Makefile2:769: recipe for target 'src/libmongoc/CMakeFiles/common-operations.dir/all' failed
make[1]: *** [src/libmongoc/CMakeFiles/common-operations.dir/all] Error 2
Makefile:151: recipe for target 'all' failed
make: *** [all] Error 2

Está recibiendo un montón de referencias indefinidas a cosas como usprep_prepare_61_swift(donde imagino que la función real se llama prepareo strFromUTF8, pero no estoy seguro).

¿Alguien puede entender este error? Estoy perplejo. No sé si tengo la versión incorrecta del paquete, si las dependencias tienen la versión incorrecta o si es algo más.

información relacionada