如何解决使用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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。