【VC++开源代码栏目提醒】:本文主要为网学会员提供“VS2010 C++下编译调试MongoDB源码 - 网站开发与设计”,希望对需要VS2010 C++下编译调试MongoDB源码 - 网站开发与设计网友有所帮助,学习一下!
参考 mongodb 官方
文档后, 考虑到 mongodb 使用了 boost 库源码, 下载编译 boost版本是 1.42时间为 2010-2-2或更新版本: boost 版本 1.42:http://sourceforge.net/projects/boost/files/boost/1.42.0/boost_1_42_0.zip/download 下载 boost 源码之后,我把 boost 解压在 D 盘。
1.在 D:boost_1_42_0下找到该批处理文件 bootstrap.bat, vs2010 命令行方 以式运行它,并最终生成 bjam.exe 可执行文件(详细结果及错误信息见生成的 bjam.log日志)。
2.将生成的 bjam.exe 文件拷贝到“D:boost_1_42_0”目录下运行下面命令行: bjam stage variantdebug --stagedird:boost_1_42_0 --with -filesystem --with-thread --with-date_time --with-program_op tions --layoutversioned threadingmulti toolsetmsvc-10.0如下图: 注:i.如果要生成 release 链接库文件,需将上面的 variant 设置成 release,形如: bjam stage variantrelease ..... ii.如果要全部生成使用下面编译选项 bjam ...... --build-typecomplete 编译过程可能会用一些时间,最终会在D:boost_1_42_0 生成一个 lib 目录,里面包括刚生成的库文件。
3.下载已用 vs2010 编译的 SpiderMonkey 库文件及源码包,并将其解压到 D 盘下,下载链接: https://github.com/dwight/
vc2010_js 将该文件夹名称改为“js”(因为 mongodb 项目会默认指定该路径寻找可用的 lib 及 c源文件),如下图:说明:SpiderMonkey 是由 C 语言操作的
JavaScript 引擎,它支持 JS1.4 和ECMAScript-262 规范。
该引擎分析、编译和执行脚本,根据 JS 数据类型和对象的需要进行内存分配及释放操作。
目前它是 Mozilla 项目的一部分。
可通过下面链接了解更多信息: https://developer.mozilla.org/en/SpiderMonkey 源码下载链接:https://developer.mozilla.org/En/SpiderMonkey/Getting_SpiderMonkey_source_code 另外如何使用 spidermonkey 参见: http://www.ibm.com/developerworks/cn/
linux/shell/js/js_engine/ 4.接下来下载并解压 mongod 源码包(本人下载的是其最新版本:r1.8.0-rc1),这里我将其也解压在了 D 盘: mongodb-src-r1.8.0-rc1: https://github.com/mongodb/mongo/zipball/r1.8.0-rc1 之后利用 vs2010 打开 D:mongodb-mongo-4d2aeb6db 目录下的解决
方案文件“db_10.sln” 加载之后的视图如下: 在其中的mongod 项目上,点击鼠标右键,打开属性对话框 在“配置属性”-“c目录”-包含目录中点“编辑”: 添加对上面的 boost 源码文件路径的包含: 设置库文件目录选项中添加对刚编译的 boost 库的路径D:boost_1_42_0lib声明,如下图: 在 C/C常规--“附加包含目录”,中添加D:boost_1_42_0声明,如下图: 5.因为我的机器是 32 位
系统,而下载的 mongodb 项目设置为 64 位,所以要修改一下编译方式,如下图: 一切就绪后,开始编译,时间比较长,耐心等待... 注:如出现“pch.h 文件无法打开”的错误信息时,只要在 VS2010 中的开该文件即可。
6.如果要调试的话,打开“项目属性”--“配置属性”--“调试”--“命令参数”,输入如下参数 : --dbpath d:mongodbdb --port 27017 然后找出 db.cpp 文件,将断点放在如下函数的第一行
代码处: int mainint argc char argv 如下图: 需要说明的是,我一开始使用的是 VS2008但 mongodb 源码在最新版本中好像就不再提供 vs2008 的项目文件了,另外我使用 vs2008 也一直没有成功编译过 mongodb,不是缺文件就是链接库编译时有问题(google 一下,发现国外同行也被类似
问题困扰)。
所以大家也就不要再 VS2008 编译上浪费时间了。
好了,到这里主要的内容介绍完了,大家可以通过调试来分析观察 MONGODB
代码的执行流程了。
参考链接:http://www.cnblogs.com/wondering/archive/2009/05/21/boost_setup.htmlhttp://www.cnblogs.com/xdotnet/archive/2008/03/22/boost_install_config.htmlhttp://www.mongodb.org/display/DOCS/BuildingwithVisualStudio2010