1.去官网http://code.google.com/p/snappy/下载snappy-1.1.1.tar.gz安装包。
2.加压到指定目录
cd ~/snappytar -zxvf snappy-1.1.1.tar.gz
cd snappy-1.1.1
./configure
make
此时打住,如果继续make install,相关的库会被安装到/usr/local/lib/下面,要自定义的话。阅读makefile会发现一切都在
exec_prefix = ${prefix}
libdir = ${exec_prefix}/lib
prefix = /usr/local
接下来,你懂得,修改prefix为你自定义目录即可。
这里我设置为
prefix = ~/bin
3.使用snappy
简单讲下怎么用像我上面那样设置的话,头文件在~/include下,.a和.so都在~/bin下
c风格使用snappy-c.h
c++使用snappy.h
#include <unistd.h>
#include <stdio.h>
#include <errno.h>
#include <iostream>
#include <strings.h>
#include <string.h>
#include <stdlib.h>
#include <sys/time.h>
#include "snappy.h"
using namespace std;
string GeneratorData(int len)
{
string ss;
for(int i=0;i<len;++i)
{
ss += "2";
}
ss+="finsih!!";
return ss;
}
int main()
{
string s = GeneratorData(1024);
string compress_s;
int compress_len = snappy::Compress(s.c_str(), s.length(), &compress_s);
printf("inlen:%d,outlen:%d,ret:%d,compress_s:%s\n",s.length(),compress_s.length(),compress_len,compress_s.c_str());
string sRcovery;
bool bucom = snappy::Uncompress(compress_s.c_str(), compress_len, &sRcovery);
printf("sRcovery.len:%d,sRcovery:%s\n",sRcovery.length(),sRcovery.c_str() );
return 0;
}
编译:
g++ -I$LOCAL_INC -o main main.cpp -L$LOCAL_LIB -lsnappy
LOCAL_INC 和LOCAL_LIB 是你安装的目录。
得到可执行的测试2进制文件。是否搞定?No,Compress等API依赖libsnappy.so.1这个动态库,直接执行会找不到动态库。
2个办法:
1.在~/.profile里设置环境变量 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/lib
2.在 /etc/ld.so.conf里指定~/lib
至此,搞定,可以测试了。