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的方式安裝:
首先安裝必要依賴:
yuminstall gflags-devel
yumyum
install zlib-devel
yuminstall
bzip2-devel
yuminstall libstdc++-devel
上面這些包是編譯必須用到的,然後對於客戶端使用可能還需要下面的包,否則會提示ld的錯誤:
然後編譯,這裡正常只需要根據需要編譯動態庫或者靜態庫即可,不用全部編譯:
makeshared_lib
# 靜態庫編譯
make static_lib
我這裡使用動態庫進行編譯,編譯完之後安裝:
makeinstall-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做硬碟驅動,核心裡面沒有選,...