Rocksdb是挺好的一個東西,就是取得一個可用的庫太麻煩。以前我是用的rocksdbsharp裏面他有編譯好windows 和 linux的庫 兼 linux
容性還挺好,ubuntu win10 直接跑沒毛病,惋惜他是去年build的了,我要用的checkpoint 這麼重要的功能,他這個版本沒有。因而乎只好自行編譯rocksdb,感受上了一條賊船啊。 git
我在使用rocksdb開發一個數據庫https://github.com/lightszero/lightchain,歡迎關注。 github
Ubuntu,ubuntu 編譯rocksdb比較順利,按照官網說明一步步正常編譯,略過。 算法
編譯經過的gcc版本爲7.3 數據庫
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
後來把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真香……
我是將make升級到了4.2
Cmake升級到了3.6.2
成功編譯出可用的rocksdb
另外將gflags 和 snappy 原來的find_package 改爲了find_library
而後
cmake .
make rocksdb-shared -j
成功
這個能夠看文檔,沒錯
就是facebook 網頁這一堆
你編譯 出來以後 ldd librocksdb.so 這樣看依賴庫狀況,有not found 就是不行。
處理方法是本身編譯 snappy1.1.5,而後cp 到 usr/lib 等幾個目錄