編譯ROCKSDB總結

Rocksdb是挺好的一個東西,就是取得一個可用的庫太麻煩。以前我是用的rocksdbsharp裏面他有編譯好windows 和 linux的庫 兼 linux

容性還挺好,ubuntu win10 直接跑沒毛病,惋惜他是去年build的了,我要用的checkpoint 這麼重要的功能,他這個版本沒有。因而乎只好自行編譯rocksdb,感受上了一條賊船啊。 git

我在使用rocksdb開發一個數據庫https://github.com/lightszero/lightchain,歡迎關注。 github

Ubuntu的順利編譯

Ubuntu,ubuntu 編譯rocksdb比較順利,按照官網說明一步步正常編譯,略過。 算法

編譯經過的gcc版本爲7.3 數據庫

Windows的艱難編譯

Windows版本由於是VC很熟悉,只不過原來都是一堆dll,互相引用,很麻煩,還有mt md的問題,其實就是機械的把全部依賴的源碼找回來,編譯成lib,改mt,體力活。最後變成一個啥也不依賴的dll,容易部署。 ubuntu

https://github.com/lightszero/lightchain/blob/master/lightdb/native/rocksdb-5.17.0.dll windows

已編好,僅限x64 centos

Centos的災難

後來把so文件放到centos跑不起,一看一堆so找不到 app

用ldd 指令 一看,缺一堆東西,第一反應是GCC有問題,試裝GCC7.3,一路升級一路bug,最後也沒裝上,沒新查了。 ui

 

 

仔細觀察rocksdb項目,facebook說明是gcc 4.8以上,centos7是知足的。既然是cmake管理的,那麼重新來整cmake吧,忽略facebook的官方文檔

 

期間發生過 cmake版本過低,make版本過低等等情況,吐血三升

 

Cmake使用很順利

須要注意這幾個選項,rocksdb這幾個壓縮算法,不開就沒有,就只能不壓縮了。

因爲rocksdb是分層壓縮的,通用的zlib確定要帶上,目前我對小數據選擇的壓縮算法是snappy。和leveldb同樣,snappy必定要帶上。

實際仍是四個壓縮都帶上吧

 

而後按facebook官網說明安裝依賴庫,編譯,一切成功。

而後ldd 一看,又吐血,yum 安裝出來的snappy庫缺兩個依賴庫,恰恰是最重要的這個你有問題。

 

沒辦法本身編譯snappy吧,把最新的源碼拖下來,繼續吐血,什麼鬼,這個項目只能生成.a

但是rocksdb那邊妥妥的配置加載snappy.so啊,cmake我門外漢,打死我也不想去改這個。

後來去把snappy的歷史版本所有都拖下來研究,嗯 snappy 1.1.5 能夠用,編譯出來的so也正常了

總結

總結一下,記錄下來,如今凌晨五點四十,編譯了妥妥的一夜。Centos真香……

 

cmake 和 make 先升級了

我是將make升級到了4.2

Cmake升級到了3.6.2

成功編譯出可用的rocksdb

gcc 須要4.8以上

rocksdb編譯 別看文檔了

  1. rocksdb的說明我怎麼也裝不上 make 直接一堆錯,緣由不明,我是直接從新搞了cmake,4個壓縮庫選項打開,

    另外將gflags 和 snappy 原來的find_package 改爲了find_library

    而後

    cmake .

    make rocksdb-shared -j

    成功

編譯以前先安裝一堆依賴庫

    這個能夠看文檔,沒錯

就是facebook 網頁這一堆

最重要,yum install snappy snappy-devel 在個人centos7上有問題,依賴庫找不到。

你編譯 出來以後 ldd librocksdb.so 這樣看依賴庫狀況,有not found 就是不行。

 

處理方法是本身編譯 snappy1.1.5,而後cp 到 usr/lib 等幾個目錄

相關文章
相關標籤/搜索