2017-10-28 111 views
0

我已經在官方的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穩定運行嗎?

回答

0

對問題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++