../pkg/leveldb-1.13.0/libleveldb.a(table_builder.o): In function `leveldb::TableBuilder::WriteBlock(leveldb::BlockBuilder*, leveldb::BlockHandle*)':
table_builder.cc:(.text+0x40e): undefined reference to `snappy::MaxCompressedLength(unsigned long)'
table_builder.cc:(.text+0x440): undefined reference to `snappy::RawCompress(char const*, unsigned long, char*, unsigned long*)'
../pkg/leveldb-1.13.0/libleveldb.a(format.o): In function `leveldb::ReadBlock(leveldb::RandomAccessFile*, leveldb::ReadOptions const&, leveldb::BlockHandle const&, leveldb::BlockContents*)':
format.cc:(.text+0x4f6): undefined reference to `snappy::GetUncompressedLength(char const*, unsigned long, unsigned long*)'
format.cc:(.text+0x658): undefined reference to `snappy::RawUncompress(char const*, unsigned long, char*)'
在使用levelDB库的时候,遇到这个问题,看提示应该是编译器找不到snappy这个库,在网上搜索了下,发现这个是一个压缩库,google的很多项目喜欢使用这个库,其特点是压缩效率高,可以进行PB级压缩。
言归正传,于是就yum install snappy 安装了这个库,然后再次编译我的测试文件
g++ -o leveldb -I ../pkg/leveldb-1.13.0/include/ -I ../pkg/leveldb-1.13.0/include/leveldb/ test_leveldb.cc ../pkg/leveldb-1.13.0/libleveldb.a -lpthread -lsnappy
然后就能正常使用了。