最近项目需要,想要测试下MongoDB读写大量小图片的速度(单纯文件系统io效率比较低,想试试NoSQL能不能提速), 因为使用C++开发,所以使用MongoDB的CXX驱动,需要自己编译,下面记录整个编译过程

  1. CXX Driver下载

    从Github的MongoDB官方源中下载https://github.com/mongodb/mongo-cxx-driver/tree/26compat,因为我需要稳定的驱动,因此选择26compat分支。然后参考官方的编译指导(https://github.com/mongodb/mongo-cxx-driver/wiki/Download%20and%20Compile)进行编译。

  2. 依赖项下载和编译

    根据官方的编译指导,需要如下依赖项,需要依次下载

    • C++编译器:这个不需要说,肯定需要,只要安装了MSVC就肯定有
    • BOOST:著名的C++拓展库,准C++标准库,官方网址http://www.boost.org/,我下载的是1.55版本,具体编译和使用方法网上很多。我是直接使用根目录下的bootstrap.bat生成b2.exe,然后“b2”直接编译整个库,相当费时间,汗一个
    • Python:主要是为了使用下面介绍Scons,由于我使用的Scons2.3.1版本不支持python3+,因此我下载的是python2.7版本,下载地址 https://www.python.org/,我直接下载msi安装文件安装,安装的时候注意勾选将python添加到系统路径选项
    • Scons:根据介绍,这货是类似Cmake的存在,不知道为什么不适用cmake而使用这个。。,官方网址http://scons.org/, 我下载的的是2.3.1版本,安装方法很简单,根据根目录下的“README.txt”,在根目录下打开命令行窗口,输入如下命令即可
    python setup.py install
  3. CXX Driver编译

打开VS2010的命令行编译工具,切换到CXX Driver的根目录,使用如下命令进行编译:

scons --use-system-boost --32 --sharedclient --dynamic-windows --prefix=$HOME/mongo-client-install --cpppath="D:\Dev\boost_1_55_0" --libpath="D:\Dev\boost_1_55_0\stage\lib" --full install-mongoclient

注意prefix选项表示最后生成的库安装的地方,cpppath和libpath表示boost库的位置,请根据自己的需要修改,其他的选项请参考官方编译指导修改“https://github.com/mongodb/mongo-cxx-driver/wiki/Download%20and%20Compile

吐槽一句,官方的命令行完全不行么,总是提示install-mongoclient 错误,可视不加这个选项就完全没有开发库安装么(就是没有吧h文件和lib文件提取出来放到一个文件夹里),这怎么玩。

MongoDB数据库CXX Driver编译的更多相关文章

  1. mongodb cxx driver学习

    mongodb 增删改查 insert 向集合中增加一个文档 remove 删除文档 update 更新(修改)某些文档 文档替换 文档修改器,只修改文档某个部分 find 返回集合中所有文档 fin ...

  2. MongoDB 4.6.1 c++ driver 编译

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/sheismylife/article/details/25512251 这个版本号已经和之前不一样了 ...

  3. 在MVC程序中使用MongoDB数据库

    .net项目中混搭数据库 安装和部署 C#中使用MongoDB MongoDb与关系型数据库区别 开机自启动 关系型数据库和非关系型数据口可以混搭 MongoDB是一个高性能,开源,无模式的,基于分布 ...

  4. 基于C#的MongoDB数据库开发应用(1)--MongoDB数据库的基础知识和使用

    在花了不少时间研究学习了MongoDB数据库的相关知识,以及利用C#对MongoDB数据库的封装.测试应用后,决定花一些时间来总结一下最近的研究心得,把这个数据库的应用单独作为一个系列来介绍,希望从各 ...

  5. DotNet 资源大全中文版,内容包括:编译器、压缩、应用框架、应用模板、加密、数据库、反编译、IDE、日志、风格指南等

    DotNet 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理.awesome-dotnet 是由 quozd 发起和维护.内容包括:编译器. ...

  6. 封装对MongoDB数据库的增删改查访问方法(基于MongoDB官方发布的C#驱动)

    本文利用MongoDB官方发布的C#驱动,封装了对MongoDB数据库的增删改查访问方法.先用官方提供的mongo-csharp-driver ,当前版本为1.7.0.4714 编写数据库访问帮助类 ...

  7. MongoDB数据库简介及安装

    一.MongoDB数据库简介 简介 MongoDB是一个高性能,开源,无模式的,基于分布式文件存储的文档型数据库,由C++语言编写,其名称来源取自"humongous",是一种开源 ...

  8. 浅析MongoDB数据库的海量数据存储应用

    [摘要]当今已进入大数据时代,特别是大规模互联网web2.0应用不断发展及云计算所需要的海量存储和海量计算发展,传统的关系型数据库已无法满足这方面的需求.随着NoSQL数据库的不断发展和成熟,可以较好 ...

  9. NodeJS连接MongoDB数据库时报错

    今天第一次尝试连接MongoDB数据库,具体步骤也很简单. 首先,通过NodeJS运行环境安装MongoDB包,进入要安装的目录,执行语句 npm install mongodb 安装成功后,通过如下 ...

随机推荐

  1. python_爬虫基础学习

    ——王宇阳—根据mooc课程总结记录笔记(Code_boy) Requests库:自动爬去HTML页面.自动网络请求提交 robots.txt:网络爬虫排除标准 Beautiful Soup库:解析H ...

  2. =与==、&与&&、| 与 || 的区别

    =与== =属于赋值运算符,将右侧的值赋给左侧的变量名称 ==属于关系运算符,判断左右两边值是否相等,结果为boolean类型 &与&& &是逻辑与,&& ...

  3. C++学习之构造函数和析构函数及指针

    C++的构造函数在创建对象时调用,分配内存空间,多少个对象(对象数组)就调用几次构造函数:析构函数在调用结束时调用(可以添加一些最后的处理)以释放内存给其它来用.对于同类型同生命期的对象,先创建的对象 ...

  4. `aclocal-1.10' is missing on your system

    root@ubuntu31:~/linux-ftools-master# makecd . && /bin/bash /root/linux-ftools-master/missing ...

  5. [转]jQuery调用ASPX返回json

    本文转自:http://www.cnblogs.com/fire-phoenix/archive/2009/11/13/1614146.html 本文介绍如何在ASP.NET(ASP.NET/AJAX ...

  6. 转载【Ubuntu】Ubuntu14.04虚拟机调整窗口大小自适应VMware14窗口

    Ubuntu屏幕居中一小块,很不好看 查看-–> 自动调整大小—>自动适应客户机/自动适应窗口 切一下就可以把Ubuntu图的界面大小调的和VMware窗口自适应了 效果:   转载 自h ...

  7. java实现汉字转为拼音

    java实现汉字转为拼音: 1.需要导入pinyin4j.jar package com.loo.pinyin; import net.sourceforge.pinyin4j.PinyinHelpe ...

  8. Value cannot be null. Parameter name: source

    下图主要想说.net抛错后的优先级, 错误1是根本原因,排第一位: 错误2里的方法包含了错误1,排第二位: 错误3就是整个Action了. 类似这样的错误,按照这样的顺序来解决bug,相信很受用.

  9. Deloyment Descriptor Web.xml Analysis

    https://javaee.github.io/tutorial/webapp003.html Web.xml详解分析: 该web.xml文件包含Facelets应用程序所需的几个元素.使用NetB ...

  10. intellijidea课程 intellijidea神器使用技巧2-2 精准搜索

    高效定位: 1 类: 类的跳转: Ctrl shift n ==> 查询类名 Ctrl shift n n ==> jar包中的类 2 文件: Ctrl shift shift n ==& ...