gpt4 book ai didi

c++ - 无法针对 Fedora 中的 mongo C++ 驱动程序进行编译

转载 作者:行者123 更新时间:2023-11-30 04:58:57 30 4
gpt4 key购买 nike

我在编译使用 mongodb-cxx 驱动程序的代码时遇到问题。一切都适用于 C 驱动程序,但不适用于 Cxx。我运行 Fedora 28 并且已经从 Fedors 的官方存储库安装了以下软件包:

mongo-c-driver-1.9.5-1.fc28.x86_64mongo-c-driver-devel-1.9.5-1.fc28.x86_64mongo-c-driver-libs-1.9.5-1.fc28.x86_64mongo-cxx-driver-1.1.2-13.fc28.x86_64mongo-cxx-driver-devel-1.1.2-13.fc28.x86_64

我尝试编译的代码没有调用任何 API 函数来连接到数据库,但作为第一步,使用连接到 mongodb 和运行操作所需的包含文件和命名空间。我尝试编译的代码是:

#include <cstdint>                                                                                                                                                                                             
#include <iostream>
#include <vector>
#include <mongo/db/json.h>
#include <mongocxx/client.hpp>
#include <mongocxx/stdx.hpp>
#include <mongocxx/uri.hpp>

using bsoncxx::builder::stream::close_array;
using bsoncxx::builder::stream::close_document;
using bsoncxx::builder::stream::document;
using bsoncxx::builder::stream::finalize;
using bsoncxx::builder::stream::open_array;
using bsoncxx::builder::stream::open_document;

int main() {
return 0;
}

我尝试编译如下代码:

$ c++ --std=c++11 mongo-cxx.cc -o test $(pkg-config --cflags --libs libmongocxx)

Package libmongocxx was not found in the pkg-config search path. Perhaps you should add the directory containing `libmongocxx.pc' to the PKG_CONFIG_PATH environment variable Package 'libmongocxx', required by 'virtual:world', not found In file included from /usr/include/mongo/db/json.h:20, from mongo-cxx.cc:4: /usr/include/mongo/bson/bsonobj.h:20:10: fatal error: boost/noncopyable.hpp: No such file or directory #include ^~~~~~~~~~~~~~~~~~~~~~~

如前所述,我使用 Fedora 的包管理器安装了 monogdb 的 cxx 驱动程序,并没有从源代码编译。我需要做任何额外的步骤吗?

谢谢你的帮助,

D.

最佳答案

您正在尝试混合使用旧的 C++ 驱动程序和新的。您安装的软件包 mongo-cxx-driver-devel-1.1.2-13.fc28.x86_64 是生命周期结束的“遗留”C++ 驱动程序。它不提供 pkg-config 文件。

此外,您的代码似乎试图包含来自旧驱动程序和新 mongocxx 驱动程序的 header ,它们是完全独立的项目。

最后,您似乎没有安装所需的 boost header 。

那么,你需要做的是:

  • 查明您是否可以获得用于 fedora 的新 C++ 驱动程序包。如果是这样,请卸载旧版驱动程序包,安装新的 C++ 驱动程序包,并删除不以 bsoncxxmongocxx 开头的 header 的使用。
  • 如果您无法获得新的 C++ 驱动程序,则需要使用旧驱动程序,并且您应该停止使用 bsoncxxmongocxx header 。您将需要安装 boost 开发头文件和库,并停止尝试调用 pkg-config,它仅在找到新的 C++ 驱动程序时使用。

关于c++ - 无法针对 Fedora 中的 mongo C++ 驱动程序进行编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51454731/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com