c - 使用 Mongo C++ 驱动程序编译会返回对 `u_strFromUTF8_66' 的未定义引用
问题描述
我使用以下 shell 脚本安装了 Mongo C++ 驱动程序,
#!/bin/bash
echo "Building MongoDB Core Dependency"
cd /home &&
wget https://github.com/mongodb/mongo-c-driver/releases/download/1.17.0/mongo-c-driver-1.17.0.tar.gz &&
tar xzf mongo-c-driver-1.17.0.tar.gz &&
cd mongo-c-driver-1.17.0 &&
mkdir cmake-build &&
cd cmake-build &&
cmake -DENABLE_AUTOMATIC_INIT_AND_CLEANUP=OFF -DCMAKE_BUILD_TYPE=Release .. &&
echo "Installing MongoDB Core Dependency" &&
sudo make install &&
cd /home &&
echo "Downloading MongoDB Driver" &&
git clone https://github.com/mongodb/mongo-cxx-driver.git --branch releases/stable --depth 1 &&
cd mongo-cxx-driver/build &&
echo "Building and Installing MongoDB Driver" &&
cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_AND_STATIC_LIBS=ON -DCMAKE_INSTALL_PREFIX=/usr/local &&
make && sudo make install
我像这样编译我的应用程序(带静态链接),
g++ main.cpp -std=c++11 -ltins -DMONGOCXX_STATIC /
-DBSONCXX_STATIC -DMONGOC_STATIC /
-DBSON_STATIC - I/usr/local/include/libmongoc-1.0 /
-I/usr/local/include/libbson-1.0 -I/usr/local/include/mongocxx/v_noabi /
-I/usr/local/include/bsoncxx/v_noabi -L/usr/local/lib -lmongocxx-static /
-lbsoncxx-static -lmongoc-static-1.0 -lz -lsasl2 -lssl -lcrypto -lrt /
-lresolv -pthread -lbson-static-1.0 /
-lm /usr/lib/x86_64-linux-gnu/librt.so /usr/lib/x86_64-linux-gnu/libm.so /
-pthread -o app
但是,编译过程失败,
/usr/bin/ld: /usr/local/lib/libmongoc-static-1.0.a(mongoc-scram.c.o): in function `_mongoc_sasl_prep_impl':
mongoc-scram.c:(.text+0x61e): undefined reference to `u_strFromUTF8_66'
/usr/bin/ld: mongoc-scram.c:(.text+0x66a): undefined reference to `u_strFromUTF8_66'
/usr/bin/ld: mongoc-scram.c:(.text+0x685): undefined reference to `usprep_openByType_66'
/usr/bin/ld: mongoc-scram.c:(.text+0x6b0): undefined reference to `usprep_prepare_66'
/usr/bin/ld: mongoc-scram.c:(.text+0x702): undefined reference to `usprep_prepare_66'
/usr/bin/ld: mongoc-scram.c:(.text+0x720): undefined reference to `usprep_close_66'
/usr/bin/ld: mongoc-scram.c:(.text+0x739): undefined reference to `u_strToUTF8_66'
/usr/bin/ld: mongoc-scram.c:(.text+0x77a): undefined reference to `u_strToUTF8_66'
/usr/bin/ld: mongoc-scram.c:(.text+0x814): undefined reference to `usprep_close_66'
/usr/bin/ld: mongoc-scram.c:(.text+0x871): undefined reference to `usprep_close_66'
collect2: error: ld returned 1 exit status
make: *** [Makefile:3: all] Error 1
它以前在我的另一台机器上工作过,不知道为什么它现在不能工作。
我什至重新安装了 Ubuntu,但也没有成功。
我的 Ubuntu 版本是20.04
,G++ 版本是9.3.0
解决方案
推荐阅读
- python - 如何仅将一个数据框中的行添加到某些列中的值不匹配的另一个数据框中
- go - 如何从相对本地文件夹中导入“包含”意义上的 .go 文件
- c# - ImageMagick:无法加载 DLL 'Magick.Native-Q8-x86.dll'
- python - 使用两个字典数组优化python中的循环
- django - url 路径中使用的名称是什么?
- python - Tensorflow错误地加载数据:数据正常通道x高度x宽度被加载为高度x宽度
- python - 3D numpy 数组更改位于其他 2 个值之间的所有值
- javascript - 通过 Jest 对复杂对象使用 Spies 和 Mocks
- r - 回归模型中的“环境”参数无效
- java - 带有“do-while 循环”的“If”条件?