MacOS下构建Xcode工程编译调试MongoDB 3.4
本人近期入了mongodb的大坑,就想配置好开发调试环境,方便后续看代码调试工作。看了mongodb跨平台支持,很好。由于之前本人比较熟悉nosql和存储引擎领域,对很多开源产品都有本地调试环境搭建经验,所以上手就希望能把mongodb本地环境打起来。好了,废话说到这里了,直接进入操作。
工具:
1.mongodb源码,我用的3.4,其他版本没弄,不确定
2.scons:2.5及以下。千万注意,别安装官网给的推荐安装scons(macos 我版本是10.15.4),因为官网推荐的scons是3.x版本,这个原因后面细说
3.xcode ,clang版本等就按照官网的要求装就好
源码下来后,直接用scons编译,命令:
scons –disable-warnings-as-errors mongod MONGO_VERSION=3.4.1 -j 4
注意:如果你是按照mongodb官网的提示,直接安装了scons3.x版本,那么这里的编译命令是
python2 buildscript/scons.py –disable-warnings-as-errors mongod MONGO_VERSION=3.4.1 -j 4
这是因为mongodb3.4版本的SConstruct文件是按照python2的语法来的,而Scons 3.x版本是使用python3的,就导致了冲突,不能直接用scons命令编译。这里我绕了个远路,参考了
将SConstruct改成了python3能编译过去的版本,但是直接用scons的时候还是会报下面的错误:
Compiler must support a thread local storage class for trivially constructible types
仔细看日志会发现是找不到<boost/shard_ptr.hpp>
我猜测是路径问题,同时找到了这个https://github.com/Linuxbrew/legacy-linuxbrew/issues/845 但是我将buildscript/scons.py 中的路径都添加到了python3的PYTHONPATH中,依然没有解决这个问题,所以如果你不想折腾,还是按我的流程把scons换成2.5吧
官网有说明,–disable-warnings-as-errors不带上,waring阻止编译,而在mac下,mongodb的warring又很多,不要去尝试改源代码
到这里mongodb的编译就完成,下面是构建xcode调试环境。查找scons的时候找到了这个
其中有关于scons转各种IDE工程的方案,参考这个构建xcode.
1.创建个新项目,选择External Build System
2.build tool选择scons
3.目录选择和mongodb的SConstruct文件统一目录
4.因为这里的Build tool用scons,所以我才必须让scons能直接运行。如果是用scons3.x版本,编译命令要python2 buildscript/scons.py 这里不知道该怎么改。
5.直接build
这个过程可能会比较长,xcode用scons编译mongod。这里没有报错的话就是ok了
6.添加调试
这里 “Executable”不要 选None,
通过“other”填刚刚编译出来的程序
启动参数按需要填
7.添加源码
我选择了整个src目录
8.断点调试
评论前必须登录!
注册