C++ 无法编译mongo cxx驱动程序

C++ 无法编译mongo cxx驱动程序,c++,mongodb,driver,C++,Mongodb,Driver,从一开始,我就完全无法在Ubuntu或CentOS虚拟机上完成新驱动程序的编译 我已经按照这些步骤写了好几次了,但我不确定哪里出了错 In file included from /home/sam/downloads/mongo-cxx-driver/src/mongocxx/private/bulk_write.hpp:20:0, from /home/sam/downloads/mongo-cxx-driver/src/mongocxx/bulk_write

从一开始,我就完全无法在Ubuntu或CentOS虚拟机上完成新驱动程序的编译

我已经按照这些步骤写了好几次了,但我不确定哪里出了错

In file included from /home/sam/downloads/mongo-cxx-driver/src/mongocxx/private/bulk_write.hpp:20:0,
                 from /home/sam/downloads/mongo-cxx-driver/src/mongocxx/bulk_write.cpp:19:
/home/sam/downloads/mongo-cxx-driver/src/mongocxx/private/libmongoc.hpp:31:63: error: ‘mongoc_client_pool_set_ssl_opts’ was not declared in this scope
 #define MONGOCXX_LIBMONGOC_SYMBOL(name) constexpr auto name = mongoc_##name;
                                                               ^
/home/sam/downloads/mongo-cxx-driver/src/mongocxx/private/libmongoc_symbols.hpp:42:1: note: in expansion of macro ‘MONGOCXX_LIBMONGOC_SYMBOL’
 MONGOCXX_LIBMONGOC_SYMBOL(client_pool_set_ssl_opts)
我已经重复了好几次了。我已经多次重新安装了整个操作系统。所讨论的错误与mongo-c-driver的1.2开发版本有关。我已经确定要安装了,但是出了点问题

编辑:

我认为这不会很快得到解决,我没有时间来真正解决这个问题。我暂时搬到了DB。几个月后,我会再次尝试

编辑2:

构建过程(确保MongoDB服务器已启动并运行后)

编辑3:

-- Found PkgConfig: /usr/bin/pkg-config (found version "0.27.1")
-- checking for module 'libbson-1.0'
--   found libbson-1.0, version 1.2.0-dev
-- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY
-- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY - Success
-- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY
-- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY - Success
-- Performing Test COMPILER_HAS_DEPRECATED_ATTR
-- Performing Test COMPILER_HAS_DEPRECATED_ATTR - Success
-- checking for module 'libmongoc-1.0'
--   found libmongoc-1.0, version 1.2.0-dev
-- Configuring done
-- Generating done
-- Build files have been written to: /home/sam/downloads/mongo-cxx-driver/build
我现在还将我的cmake构建的标志添加到:

cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_CXX_COMPILER=/usr/bin/clang++ -DCMAKE_C_COMPILER=/usr/bin/clang ..

clang version 3.4.2 (tags/RELEASE_34/dot2-final)
Target: x86_64-redhat-linux-gnu
Thread model: posix
我现在犯了更多/更好的错误

In file included from /home/sam/downloads/mongo-cxx-driver/src/mongocxx/private/libmongoc.hpp:32:
/home/sam/downloads/mongo-cxx-driver/src/mongocxx/private/libmongoc_symbols.hpp:42:1: error:
      use of undeclared identifier 'mongoc_client_pool_set_ssl_opts'; did you
      mean 'client_pool_set_ssl_opts'?
MONGOCXX_LIBMONGOC_SYMBOL(client_pool_set_ssl_opts)
^
/home/sam/downloads/mongo-cxx-driver/src/mongocxx/private/libmongoc.hpp:31:63: note:
      expanded from macro 'MONGOCXX_LIBMONGOC_SYMBOL'
#define MONGOCXX_LIBMONGOC_SYMBOL(name) constexpr auto name = mongoc_##name;
                                                              ^
<scratch space>:19:1: note: expanded from here
mongoc_client_pool_set_ssl_opts
^
/home/sam/downloads/mongo-cxx-driver/src/mongocxx/private/libmongoc_symbols.hpp:42:27: note:
      'client_pool_set_ssl_opts' declared here
MONGOCXX_LIBMONGOC_SYMBOL(client_pool_set_ssl_opts)
                          ^
/home/sam/downloads/mongo-cxx-driver/src/mongocxx/private/libmongoc.hpp:31:56: note:
      expanded from macro 'MONGOCXX_LIBMONGOC_SYMBOL'
#define MONGOCXX_LIBMONGOC_SYMBOL(name) constexpr auto name = mongoc_##name;
                                                       ^
In file included from /home/sam/downloads/mongo-cxx-driver/src/mongocxx/bulk_write.cpp:19:
In file included from /home/sam/downloads/mongo-cxx-driver/src/mongocxx/private/bulk_write.hpp:20:
In file included from /home/sam/downloads/mongo-cxx-driver/src/mongocxx/private/libmongoc.hpp:32:
/home/sam/downloads/mongo-cxx-driver/src/mongocxx/private/libmongoc_symbols.hpp:42:1: error:
      variable 'client_pool_set_ssl_opts' declared with 'auto' type cannot
      appear in its own initializer
MONGOCXX_LIBMONGOC_SYMBOL(client_pool_set_ssl_opts)
^
/home/sam/downloads/mongo-cxx-driver/src/mongocxx/private/libmongoc.hpp:31:63: note:
      expanded from macro 'MONGOCXX_LIBMONGOC_SYMBOL'
#define MONGOCXX_LIBMONGOC_SYMBOL(name) constexpr auto name = mongoc_##name;
                                                              ^
<scratch space>:19:1: note: expanded from here
mongoc_client_pool_set_ssl_opts
^
包含在/home/sam/downloads/mongo-cxx-driver/src/mongocxx/private/libmongoc.hpp:32中的文件中:
/home/sam/downloads/mongo-cxx-driver/src/mongocxx/private/libmongoc_-symbols.hpp:42:1:错误:
使用未声明的标识符“mongoc_client_pool_set_ssl_opts”;是吗
是指“客户端\u池\u集\u ssl\u选项”?
MONGOCXX\u LIBMONGOC\u符号(客户端\u池\u集\u ssl\u选项)
^
/home/sam/downloads/mongo-cxx-driver/src/mongocxx/private/libmongoc.hpp:31:63:注意:
从宏“MONGOCXX\u LIBMONGOC\u SYMBOL”展开
#定义MONGOCXX_LIBMONGOC_符号(名称)constexpr auto name=mongoc##name;
^
:19:1:注意:从此处展开
mongoc\u客户端\u池\u集\u ssl\u选项
^
/home/sam/downloads/mongo-cxx-driver/src/mongocxx/private/libmongoc_-symbols.hpp:42:27:注意:
此处声明了“客户端池集ssl选项”
MONGOCXX\u LIBMONGOC\u符号(客户端\u池\u集\u ssl\u选项)
^
/home/sam/downloads/mongo-cxx-driver/src/mongocxx/private/libmongoc.hpp:31:56:注意:
从宏“MONGOCXX\u LIBMONGOC\u SYMBOL”展开
#定义MONGOCXX_LIBMONGOC_符号(名称)constexpr auto name=mongoc##name;
^
在/home/sam/downloads/mongo cxx driver/src/mongocxx/bulk_write.cpp:19中包含的文件中:
文件包括在/home/sam/downloads/mongo-cxx-driver/src/mongocxx/private/bulk_-write.hpp:20:
在/home/sam/downloads/mongo-cxx-driver/src/mongocxx/private/libmongoc.hpp中包含的文件中:32:
/home/sam/downloads/mongo-cxx-driver/src/mongocxx/private/libmongoc_-symbols.hpp:42:1:错误:
无法使用“auto”类型声明变量“client\u pool\u set\u ssl\u opts”
出现在它自己的初始值设定项中
MONGOCXX\u LIBMONGOC\u符号(客户端\u池\u集\u ssl\u选项)
^
/home/sam/downloads/mongo-cxx-driver/src/mongocxx/private/libmongoc.hpp:31:63:注意:
从宏“MONGOCXX\u LIBMONGOC\u SYMBOL”展开
#定义MONGOCXX_LIBMONGOC_符号(名称)constexpr auto name=mongoc##name;
^
:19:1:注意:从此处展开
mongoc\u客户端\u池\u集\u ssl\u选项
^
编辑4:

将clang更新为3.6,因为我认为这可能会解决一些问题。我重建了libbson、libmongoc并重试

Scanning dependencies of target mongocxx
[ 23%] Building CXX object src/mongocxx/CMakeFiles/mongocxx.dir/bulk_write.cpp.o
In file included from /home/sam/downloads/mongo-cxx-driver/src/mongocxx/bulk_write.cpp:19:
In file included from /home/sam/downloads/mongo-cxx-driver/src/mongocxx/private/bulk_write.hpp:20:
In file included from /home/sam/downloads/mongo-cxx-driver/src/mongocxx/private/libmongoc.hpp:32:
/home/sam/downloads/mongo-cxx-driver/src/mongocxx/private/libmongoc_symbols.hpp:42:1: error: use of undeclared identifier
      'mongoc_client_pool_set_ssl_opts'; did you mean 'mongoc_client_pool_try_pop'?
MONGOCXX_LIBMONGOC_SYMBOL(client_pool_set_ssl_opts)
^
/home/sam/downloads/mongo-cxx-driver/src/mongocxx/private/libmongoc.hpp:31:63: note: expanded from macro
      'MONGOCXX_LIBMONGOC_SYMBOL'
#define MONGOCXX_LIBMONGOC_SYMBOL(name) constexpr auto name = mongoc_##name;
                                                              ^
<scratch space>:20:1: note: expanded from here
mongoc_client_pool_set_ssl_opts
^
/usr/local/include/libmongoc-1.0/mongoc-client-pool.h:45:23: note: 'mongoc_client_pool_try_pop' declared here
mongoc_client_t      *mongoc_client_pool_try_pop (mongoc_client_pool_t *pool);
                      ^
1 error generated.
make[2]: *** [src/mongocxx/CMakeFiles/mongocxx.dir/bulk_write.cpp.o] Error 1
make[1]: *** [src/mongocxx/CMakeFiles/mongocxx.dir/all] Error 2
make: *** [all] Error 2
扫描目标mongocxx的依赖项
[23%]构建CXX对象src/mongocxx/cmakfiles/mongocxx.dir/bulk_write.cpp.o
在/home/sam/downloads/mongo cxx driver/src/mongocxx/bulk_write.cpp:19中包含的文件中:
文件包括在/home/sam/downloads/mongo-cxx-driver/src/mongocxx/private/bulk_-write.hpp:20:
在/home/sam/downloads/mongo-cxx-driver/src/mongocxx/private/libmongoc.hpp中包含的文件中:32:
/home/sam/downloads/mongo-cxx-driver/src/mongocxx/private/libmongoc_-symbols.hpp:42:1:错误:使用未声明的标识符
“mongoc_客户端_池_集_ssl_选项”;你是说“mongoc\u客户端\u池\u尝试\u pop”吗?
MONGOCXX\u LIBMONGOC\u符号(客户端\u池\u集\u ssl\u选项)
^
/home/sam/downloads/mongo-cxx-driver/src/mongocxx/private/libmongoc.hpp:31:63:注意:从宏扩展
“MONGOCXX_LIBMONGOC_符号”
#定义MONGOCXX_LIBMONGOC_符号(名称)constexpr auto name=mongoc##name;
^
:20:1:注意:从此处展开
mongoc\u客户端\u池\u集\u ssl\u选项
^
/usr/local/include/libmongoc-1.0/mongoc-client-pool.h:45:23:注意:这里声明了“mongoc\u-client\u-pool\u-try\u-pop”
mongoc_client_t*mongoc_client_pool_try_pop(mongoc_client_pool_t*pool);
^
生成1个错误。
make[2]:***[src/mongocxx/CMakeFiles/mongocxx.dir/bulk_write.cpp.o]错误1
make[1]:***[src/mongocxx/CMakeFiles/mongocxx.dir/all]错误2
make:**[全部]错误2

我发现了这个问题

#ifdef MONGOC_ENABLE_SSL
void                  mongoc_client_pool_set_ssl_opts (mongoc_client_pool_t   *pool,
                                                       const mongoc_ssl_opt_t *opts);
#endif

MONGOC_ENABLE_SSL被设置为0,因为我没有安装OpenSSL-devel软件包。我将向MongoCXX驱动程序开发人员提出一个问题,以确保他们在wiki页面上清楚地指出这一点。

我不确定到底出了什么问题。我刚刚进行了测试,并根据当前的C驱动程序1.2.0-dev HEAD从源代码重新构建了C++11驱动程序,一切正常。如何构建和安装C驱动程序(autogen、configure和make命令)?配置C++11驱动程序构建的CMake行是什么?刚刚添加到我的构建过程中。它完全基于上面的文件。当我运行C++11驱动程序CMake时,我在输出中得到如下行:find libbson-1.0,version 1.2.0-dev和find libmongoc-1.0,version 1.2.0-dev。您在CMake输出中看到这些行了吗?您的系统上是否有其他mongodb C驱动程序副本?您执行安装的C驱动程序是在哪里生成的?是的,否,除非他们使用mongodb安装,并且它似乎安装到usr/local/include/mongoc/usr/local/lib/您能用CMake输出更新您的问题吗?“locate mongoc.h”在您的系统上返回什么?在调用CMake之前,能否尝试在环境中设置PKG_CONFIG_PATH=/usr/local?
#ifdef MONGOC_ENABLE_SSL
void                  mongoc_client_pool_set_ssl_opts (mongoc_client_pool_t   *pool,
                                                       const mongoc_ssl_opt_t *opts);
#endif