linux下rocksdb的編譯安裝

2022-07-11 00:42:10 字數 2279 閱讀 8501

rocksdb起源於facebook的實驗室專案,實現了乙個高效能的快速儲存器,是基於c++編寫的key value資料庫,很多軟體都是採用內建rocksdb的方式執行,所以需要我們提前安裝rocksdb的庫,下面主要敘述一下rocksdb的原始碼編譯過程,

github倉庫:

作業系統:centos 7.x  gcc 4.8

編譯前依賴:cmake,gflags,liblz4

yum -y install lz4-devel

準備好之後開始安裝rocksdb,目前最新穩定版是:5.18.3

解壓安裝包並建立編譯目錄:

tar -xvzf rocksdb-5.18.3.tar

.gzcd rocksdb-5.18.3/

mkdir

build

cd build

然後開始編譯源**:

cmake -dcmake_install_prefix=/usr/local/rocksdb ..

make

make

install

這裡將rocksdb安裝到/usr/local/rocksdb獨立目錄,方便進行管理

這這裡rocksdb就算安裝成功了,比如我們想使用python操作rocksdb,需要模組python-rocksdb,而這個模組就需要依賴於剛才編譯好的rocksdb作為基礎庫,所以需要

設定標頭檔案和lib環境變數,提供python-rocksdb模組編譯和執行時使用:

export cplus_include_path=$cplus_include_path:/usr/local/rocksdb/include/export ld_library_path=$ld_library_path:/usr/local/rocksdb/lib64/export library_path=$library_path:/usr/local/rocksdb/lib64/

上面具體的變數匯入在python-rocksdb文件上也有描述,這些變數可以新增至profile,後續無需再匯入,然後可以安裝python-rocksdb模組:

pip install python-rocksdb

安裝之後如果import rocksdb沒問題說明成功了,注意匯入的時候也需要gflags依賴,不要忘了加到ld_library_path

--------------------------------- 20200909 更新 ---------------------------------------

除了上面的方式安裝外還可以按照下面的不用cmake的方式安裝:

首先安裝必要依賴:

yum

install gflags-devel

yumyum

install zlib-devel

yuminstall

bzip2-devel

yuminstall libstdc++-devel

上面這些包是編譯必須用到的,然後對於客戶端使用可能還需要下面的包,否則會提示ld的錯誤:

然後編譯,這裡正常只需要根據需要編譯動態庫或者靜態庫即可,不用全部編譯:

make

shared_lib

# 靜態庫編譯

make static_lib

我這裡使用動態庫進行編譯,編譯完之後安裝:

make

install-shared prefix=/usr/local/rocksdb

# 靜態庫安裝

make

install-static prefix=/usr/local/rocksdb

同樣我這裡也是用動態庫的方式安裝,安裝大小靜態庫比動態庫要大很多,prefix指定安裝的位置,預設是/usr/local,這樣rocksdb就安裝上了,然後同樣需要指定一下執行時的目錄:

export ld_library_path=$ld_library_path:/usr/local/rocksdb/lib

編譯的時候根據具體的程式指定標頭檔案和動態庫的目錄即可,上面敘述的這種方法同樣可以安裝rocksdb,也是官網上介紹的一種方法

Linux實驗 Linux下的shell程式設計

某單位的系統管理員計畫用shell程式設計編寫乙個程式實現usb裝置的自動掛載。程式的功能如下 運算程式時,提示使用者輸入 y 或 n 確定是不是掛載usb裝置。如果使用者輸入 y 則掛載這個usb裝置。提示使用者輸入 y 或 n 確定是不是複製文字。如果使用者輸入 y 則顯示檔案列表,然後提示使用...

linux下的shell 和python編寫

第一句即指定指令碼直譯器 bin bash usr bin env python3或 which python3的哪個 usr bin python3 執行兩種方法 第一種編寫完 直接bash s.sh python3 s.py 第二種賦加x chmod a x s.sh chmod 777 s.p...

vmware下初編linux問題

今天在vmware下編譯linux2.4.18核心,出現了乙個問題 mkinitrd initrd 2.4.26.img 2.4.26的時候出現錯誤 no module buslogic found for kernel 2.4.26 原來是vmware預設用的是scsi做硬碟驅動,核心裡面沒有選,...