mongodb编译及macos xcode调试环境构建

MacOS下构建Xcode工程编译调试Mongodb3.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命令编译。这里我绕了个远路,参考了

https://github.com/mongodb/mongo/pull/1216

https://github.com/mongodb/mongo/pull/1195

将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的时候找到了这个

https://github.com/SCons/scons/wiki/IDEIntegration

其中有关于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.断点调试

我来评几句
登录后评论

已发表评论数()

相关站点

热门文章