- オペレーティングシステム:Ubuntu 18.04.4 LTS
- カーネル: Linux 5.3.0-1018-raspi2
- アーキテクチャ: arm64
ソースからlibmongoc 1.13.0をビルドしようとしています。 Ubuntu 18.04.4を実行するRaspberry Pi 4に構築しています。文脈上、私の究極の目標は、以下を構築することです。このスウィフトライブラリ、時には異なります。モンゴルスウィフト、これは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.1libssl-dev
:バージョン1.1.1-1ubuntu2.1〜18.04.5libsasl2-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
orであると思われますが、strFromUTF8
わかりません)。
このエラーを理解できる人はいますか?混乱しています。パッケージのバージョンが間違っているか、依存関係が間違ったバージョンであるか、それとも別のバージョンであるかはわかりません。