如何为Debian 8 Jessie(stable)构建Mongodb 3.4(mongod)?

问题描述:

我已经在官方的mongodb仓库中修改并修改了一些小问题3.4。如何为Debian 8 Jessie(stable)构建Mongodb 3.4(mongod)?

我正在建立一个全新的VM,从头开始安装所需的软件包以构建源代码。

构建指令强制GCC 5.3如果我切换到不稳定和编译这不是在Debian中8的稳定分配可用的,(它的工作原理,但耶)输出可执行文件> 600MB,并且不上一个稳定版Debian运行有GCC 4.9。

问题1:我的构建的大小是否比mongodb debian 8存储库中提出的版本大10倍?

-rwxr-xr-x 1 root root 52M Sep 11 17:50 /usr/bin/mongod 

-rwxr-xr-x 1 root root 664M Oct 28 11:50 /build/mongod 

问题2:此外,我建立的版本不能在Debian 8个稳定运行becauses它使用GCC 5.3这是不具备的稳定。那么如何构建它,以便像稳定的debian 8一样运行,就像mongodb提供的软件包仓库一样?

如果我尝试使用GCC 4.9.2构建,尽管我最终可能会修复一些错误,但它仍然是一个难以编译的问题。这是否意味着他们有一些魔术技巧?

# scons core -j 3 --ssl --link-model=object --opt=on --dbg=off --disable-minimum-compiler-version-enforcement --disable-warnings-as-errors 

[...] 

src/mongo/db/repl/storage_interface_mock.h:50: error: undefined reference to 'vtable for mongo::repl::CollectionBulkLoaderMock' 
/usr/bin/ld.gold: the vtable symbol may be undefined because the class is missing its key function 

我可以看到,有在源库中的特殊目录debian,可以说可能在某种程度上可以被用于构建Debian软件包。我应该如何使用它?这会让它在debian 8稳定运行吗?

对问题1的回答:可执行输出包含的调试符号可以使用strip linux命令从二进制文件中删除。这减少了文件大小回〜50MB

回答问题2:为了建立Debian的8稳定,不应该使用GCC编译器,而是使用CLANG。文档记录的最小版本是3.4,版本3.5是稳定的debian 8软件包。

虽然在Scons编译脚本(python)中有一些小的编译问题。但修复后,它会生成一个可执行文件,可以在debian 8 stable上运行。

scons core -j 3 --ssl --link-model=object --opt=on --dbg=off --disable-minimum-compiler-version-enforcement --disable-warnings-as-errors CC=/usr/bin/clang CXX=/usr/bin/clang++