leveldb自帶的Makefile中居然沒有install
那我自己寫一個腳本得了:
#!/bin/bash
checkRoot(){
if [ ! $(id -u) = 0 ];then
echo "need be root!,your id -u is :$(id -u)"
exit;
fi
}
PREFIX=/usr
INCLUDE=$PREFIX/include
LIB=$PREFIX/lib
help(){
echo "$0 install|uninstall"
}
check(){
#verify
ls $INCLUDE/leveldb
ls -l $LIB/libleveldb.a $LIB/libmemenv.a
}
myinstall(){
checkRoot
cp libleveldb.a $LIB/libleveldb.a
cp libmemenv.a $LIB/libmemenv.a
cp -R include/leveldb $INCLUDE/leveldb
check
}
myuninstall(){
checkRoot
if [ -d $INCLUDE/leveldb ] ;then
rm -R $INCLUDE/leveldb
fi;
if [ -f $LIB/libleveldb.a ] ;then
rm $LIB/libleveldb.a
rm $LIB/libmemenv.a
fi;
}
if [ ! -z $1 ];then
if [ $1 = "-h" -o $1 = "-?" ];then
help
exit 0
fi
if [ $1 = "install" ];then
myinstall
echo "Install done..."
exit
fi;
if [ $1 = "uninstall" ] ;then
myuninstall
echo "Uninstall done..."
exit
fi;
if [ $1 = "check" ];then
check
exit;
fi;
fi;
help
其實還可以添加 --prefix參數 指定自己的位置。很簡單的腳本
運行腳本的方法:首先make ,生成libleveldb.a和libmemenv.a的時候就可以運行此腳本了!
將此腳本保存為文件,比如命名為 install.sh
然后命令行下輸入 chmod +x ./install.sh
輸入./install.sh 顯示基本信息
sudo ./install.sh install #安裝leveldb到系統目錄/usr/lib和/usr/include中
sudo ./install.sh uninstall # 從系統目錄中刪除 /usr/lib 和/usr/include 的leveldb的.a 和頭文件。
./install.sh check 可以查看是否在系統目錄中有這些文件,並打印出來。
使用leveldb的方法就是 你編寫的leveldbtest.cpp 后,里面直接使用頭文件即可,編譯用:
g++ leveldbtest.cpp -o leveldbtest.out -lleveldb -I/usr/include/leveldb -L/usr/lib -lpthread
如果你編譯安裝了 snappy的話 還要加上 -lsnappy -I/usr/loca/include -L/usr/local/lib ,這個是一個和數據庫壓縮相關的東西。。
leveldb還支持 google的perfecttools,具體有什么用,我還真不太清楚,好像是優化了malloc 的東西。這兩個具體有什么神奇的效果,以及性能測試怎么樣,得使用后測試才知道。現在可以先不適用這兩個庫。