首页 > 解决方案 > 在 ubuntu 18.04 容器上安装 mongocxx

问题描述

背景

我将在ref1之后在 ubuntu 18.04 容器中安装 mongocxx 。

我在ref2之后安装了要求

apt install libbson-1.0-0 libbson-dev libmongoc-1.0-0 libmongoc-dev

然后下载 mongo-cxx-driver-r3.2.0 和 cmake 之类的

cmake ..                                            \
    -DCMAKE_BUILD_TYPE=Release                      \
    -DBSONCXX_POLY_USE_BOOST=1                      \
    -DCMAKE_INSTALL_PREFIX=/usr/local       \
    -DCMAKE_PREFIX_PATH=/usr/lib/x86_64-linux-gnu        

错误:

BSON_INCLUDE_DIRS does not exist !
Call Stack (most recent call first):
  /usr/lib/x86_64-linux-gnu/cmake/libbson-1.0/libbson-1.0-config.cmake:33

问题

如果我手动 vim

/usr/lib/x86_64-linux-gnu/cmake/libbson-1.0/libbson-1.0-config.cmake

/usr/lib/x86_64-linux-gnu/cmake/libmongoc-1.0/libmongoc-1.0-config.cmake

如 appendix.them_are_install_here 所示

另一个错误发生:

CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
BSON_LIBRARY
    linked by target "bsoncxx_testing" in directory /root/icode/gitroot/mongo-cxx-driver-r3.2.0/src/bsoncxx
    linked by target "bsoncxx" in directory /root/icode/gitroot/mongo-cxx-driver-r3.2.0/src/bsoncxx
    linked by target "test_bson" in directory /root/icode/gitroot/mongo-cxx-driver-r3.2.0/src/bsoncxx/test
    linked by target "mongocxx_mocked" in directory /root/icode/gitroot/mongo-cxx-driver-r3.2.0/src/mongocxx
    linked by target "mongocxx" in directory /root/icode/gitroot/mongo-cxx-driver-r3.2.0/src/mongocxx
    linked by target "test_logging" in directory /root/icode/gitroot/mongo-cxx-driver-r3.2.0/src/mongocxx/test
    linked by target "test_gridfs_specs" in directory /root/icode/gitroot/mongo-cxx-driver-r3.2.0/src/mongocxx/test
    linked by target "test_instance" in directory /root/icode/gitroot/mongo-cxx-driver-r3.2.0/src/mongocxx/test
    linked by target "test_driver" in directory /root/icode/gitroot/mongo-cxx-driver-r3.2.0/src/mongocxx/test
    linked by target "test_crud_specs" in directory /root/icode/gitroot/mongo-cxx-driver-r3.2.0/src/mongocxx/test
MONGOC_LIBRARY
    linked by target "mongocxx_mocked" in directory /root/icode/gitroot/mongo-cxx-driver-r3.2.0/src/mongocxx
    linked by target "mongocxx" in directory /root/icode/gitroot/mongo-cxx-driver-r3.2.0/src/mongocxx
    linked by target "test_logging" in directory /root/icode/gitroot/mongo-cxx-driver-r3.2.0/src/mongocxx/test
    linked by target "test_gridfs_specs" in directory /root/icode/gitroot/mongo-cxx-driver-r3.2.0/src/mongocxx/test
    linked by target "test_instance" in directory /root/icode/gitroot/mongo-cxx-driver-r3.2.0/src/mongocxx/test
    linked by target "test_driver" in directory /root/icode/gitroot/mongo-cxx-driver-r3.2.0/src/mongocxx/test
    linked by target "test_crud_specs" in directory /root/icode/gitroot/mongo-cxx-driver-r3.2.0/src/mongocxx/test

-- Configuring incomplete, errors occurred!
  1. 我哪里做错了?我该如何解决?

  2. “apt search libmongoclient-dev”和 mongocxx 有什么区别?

我只是找到一些相关的,ref4显示了另一种安装方式。我明天试试。

如果您有任何建议,请提供帮助。:)

附录

他们在这里安装

root@42c2d968e81e:~/icode/gitroot/mongo-cxx-driver-r3.2.0/build# find /usr -regex '.*mongoc.*so'
/usr/lib/x86_64-linux-gnu/libmongoclient.so
/usr/lib/x86_64-linux-gnu/libmongoc-1.0.so
root@42c2d968e81e:~/icode/gopath/src/baidu/AIIB-MIA/data_collector# find /usr -regex '.*bson.*so'
/usr/lib/x86_64-linux-gnu/libbson-1.0.so
root@42c2d968e81e:~/icode/gopath/src/baidu/AIIB-MIA/data_collector# stat /usr/include/libbson-1.0
  File: /usr/include/libbson-1.0

标签: mongodbcmake

解决方案


尝试http://mongocxx.org/mongocxx-v3/installation/linux/中以开头的部分

用户必须使用 -DLIBMONGOC_DIR 和 -DLIBBSON_DIR 选项指定 libmongoc 安装目录,而不是 -DCMAKE_PREFIX_PATH 选项:

具体来说


    -DLIBMONGOC_DIR=/usr/lib             \
    -DLIBBSON_DIR=/usr/lib               \

由于您的 libbson/libmongoc 和 libmongoc++ 将最终出现在不同的地方,您需要告诉 libmongoc++ libbson 和 libmongoc 在哪里。

您不应该编辑系统包管理器安装的任何文件(/usr 中的任何内容)。您也不应该将手动编译的软件安装到 /usr 中(这就是 /usr/local 的用途)。


推荐阅读