Сборка Mongo C Driver 1.13.0 на Ubuntu Raspberry Pi

Сборка Mongo C Driver 1.13.0 на Ubuntu Raspberry Pi
  • Операционная система: Ubuntu 18.04.4 LTS
  • Ядро: Linux 5.3.0-1018-raspi2
  • Архитектура: arm64

Я пытаюсь собрать libmongoc 1.13.0 из исходников. Я собираю это на Raspberry Pi 4 под управлением Ubuntu 18.04.4. работает Для контекста, моя конечная цель — собратьэта библиотека Swift, который зависит отMongoSwift, который зависит от libmongoc. Я собираю версию 1.13.0 специально, потому что, как мне кажется, версия libmongoc-dev, установленная из apt-get, неверна. Когда я пытаюсь скомпилировать MongoSwift, я получаю кучу ошибок (обрезанных, поскольку отправка полного вывода вызвала срабатывание спам-фильтра):

/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) }
                                                         ^~~~~~~~~~~~~~~~~~~~~~~

Когда я загружаю версию 1.13.0, bson_iter_overwrite_date_timeфункции, похоже, определены. Похоже, это версия на моем Mac, которая правильно собирает библиотеки Swift.

Я следил заинструкции по установке драйвера MongoDB C, но я не могу собрать. Я установил 3 зависимости:

  • cmake: версия 3.10.2-1ubuntu2.18.04.1
  • libssl-dev: версия 1.1.1-1ubuntu2.1~18.04.5
  • libsasl2-dev: 2.1.27~101-g0780600+dfsg-3ubunt

Я могу успешно загрузить tarball, создать cmake-buildкаталог и запустить cmake. Но запуск makeзавершается ошибкой

[ 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

Он получает кучу неопределенных ссылок на такие вещи, как usprep_prepare_61_swift(где, как я предполагаю, фактическая функция называется prepareили strFromUTF8, но я не уверен).

Кто-нибудь может понять эту ошибку? Я в тупике. Я не знаю, то ли у меня не та версия пакета, то ли у зависимостей не та версия, то ли это что-то еще.

Связанный контент