- 操作系统: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。我专门构建了 1.13.0 版本,因为我认为从 apt-get 安装的 libmongoc-dev 版本是错误的。当我尝试编译 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
,但我不确定)。
任何人都可以理解这个错误吗?我很困惑。我不知道我的包版本是否错误,依赖项是否版本错误,或者是否是其他原因。