Ubuntu Raspberry Pi で Mongo C ドライバー 1.13.0 をビルドする

Ubuntu Raspberry Pi で Mongo C ドライバー 1.13.0 をビルドする
  • オペレーティング システム: Ubuntu 18.04.4 LTS
  • カーネル: Linux 5.3.0-1018-raspi2
  • アーキテクチャ: arm64

私はソースからlibmongoc 1.13.0をビルドしようとしています。私はこれをUbuntu 18.04.4を実行しているRaspberry Pi 4でビルドしています。コンテキストのために、私の最終的な目標はビルドすることですこのSwiftライブラリ、それはモンゴスウィフトは libmongoc に依存しています。apt-get からインストールされた libmongoc-dev のバージョンが間違っていると思われるため、バージョン 1.13.0 を具体的にビルドしています。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が、確信はありません)。

このエラーの意味を理解できる人はいますか? 困惑しています。パッケージのバージョンが間違っているのか、依存関係のバージョンが間違っているのか、それとも何か他の原因があるのか​​わかりません。

関連情報