Construa o driver Mongo C 1.13.0 no Ubuntu Raspberry Pi

Construa o driver Mongo C 1.13.0 no Ubuntu Raspberry Pi
  • Sistema operacional: Ubuntu 18.04.4 LTS
  • Kernel: Linux 5.3.0-1018-raspi2
  • Arquitetura: arm64

Estou tentando construir o libmongoc 1.13.0 a partir do código-fonte. Estou construindo isso em um Raspberry Pi 4 rodando Ubuntu 18.04.4. running Para contextualizar, meu objetivo final é construiresta biblioteca Swift, que dependeMongoSwift, que depende do libmongoc. Estou construindo a versão 1.13.0 especificamente porque acho que a versão do libmongoc-dev instalada no apt-get está errada. Quando tento compilar o MongoSwift, recebo vários erros (truncados porque a postagem da saída completa acionou o 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) }
                                                         ^~~~~~~~~~~~~~~~~~~~~~~

Quando faço o download da versão 1.13.0, as bson_iter_overwrite_date_timefunções parecem estar definidas. Esta parece ser a versão no meu Mac, que constrói as bibliotecas Swift corretamente.

Eu segui oinstruções para instalar o driver MongoDB C, mas não consigo construir. Instalei as 3 dependências:

  • cmake: versão 3.10.2-1ubuntu2.18.04.1
  • libssl-dev: versão 1.1.1-1ubuntu2.1 ~ 18.04.5
  • libsasl2-dev: 2.1.27 ~ 101-g0780600 + dfsg-3ubunt

Posso baixar o tarball com sucesso, criar o cmake-builddiretório e executar o cmake. Mas correr makefalha com

[ 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á recebendo um monte de referências indefinidas a coisas como usprep_prepare_61_swift(onde imagino que a função real seja nomeada prepareou strFromUTF8, mas não tenho certeza).

Alguém pode entender esse erro? Estou perplexo. Não sei se estou com a versão errada do pacote, se as dependências estão com a versão errada ou se é outra coisa.

informação relacionada