JingchengLi/swapdb

在centos7上编译失败

Opened this issue · 2 comments

/data/swapdb/swap-redis-4.0.0/deps/linenoise/linenoise.c: 在函数‘refreshMultiLine’中:
/data/swapdb/swap-redis-4.0.0/deps/linenoise/linenoise.c:568:27: 警告:ISO C99 需要使用剩余的参数 [默认启用]
lndebug("clear+up");
^
/data/swapdb/swap-redis-4.0.0/deps/linenoise/linenoise.c:574:20: 警告:ISO C99 需要使用剩余的参数 [默认启用]
lndebug("clear");
^
/data/swapdb/swap-redis-4.0.0/deps/linenoise/linenoise.c:591:28: 警告:ISO C99 需要使用剩余的参数 [默认启用]
lndebug("");
^
/data/swapdb/swap-redis-4.0.0/deps/linenoise/linenoise.c:619:17: 警告:ISO C99 需要使用剩余的参数 [默认启用]
lndebug("\n");
^
[ 16%] Building C object build/SWAP_REDIS/CMakeFiles/redis-check-rdb.dir/src/blocked.c.o
/data/swapdb/swap-redis-4.0.0/src/bitops.c: 在函数‘bitfieldCommand’中:
/data/swapdb/swap-redis-4.0.0/src/bitops.c:213:54: 警告:此函数中的‘wrapped’在使用前可能未初始化 [-Wmaybe-uninitialized]
bitval = (value & ((uint64_t)1<<(bits-1-j))) != 0;
^
/data/swapdb/swap-redis-4.0.0/src/bitops.c:1053:42: 附注:‘wrapped’在此声明
uint64_t oldval, newval, wrapped, retval;
^
[ 17%] Building C object build/SWAP_REDIS/CMakeFiles/redis-check-rdb.dir/src/childinfo.c.o
[ 18%] Building C object build/SWAP_REDIS/CMakeFiles/redis-server.dir/src/blocked.c.o
[ 18%] Building C object build/SWAP_REDIS/CMakeFiles/redis-server.dir/src/childinfo.c.o
/data/swapdb/swap-redis-4.0.0/src/bitops.c: 在函数‘bitfieldCommand’中:
/data/swapdb/swap-redis-4.0.0/src/bitops.c:213:54: 警告:此函数中的‘wrapped’在使用前可能未初始化 [-Wmaybe-uninitialized]
bitval = (value & ((uint64_t)1<<(bits-1-j))) != 0;
^
/data/swapdb/swap-redis-4.0.0/src/bitops.c:1053:42: 附注:‘wrapped’在此声明
uint64_t oldval, newval, wrapped, retval;
^
[ 18%] Building C object build/SWAP_REDIS/CMakeFiles/redis-check-rdb.dir/src/cluster_v3.c.o

最终编译结束时报错

[100%] Linking CXX executable ../ssdb-server
CMakeFiles/ssdb-server.dir/src/serv.cpp.o:在函数‘proc_debug(Context&, Link*, std::vector<Bytes, std::allocator > const&, Response*)’中:
/data/swapdb/swap-ssdb-1.9.2/src/serv.cpp:586:对‘rocksdb::WriteBatch::WriteBatch(unsigned long, unsigned long)’未定义的引用
../lib/libssdb.a(ssdb_impl.cpp.o):在函数‘SSDBImpl::resetRepopid(Context&)’中:
/data/swapdb/swap-ssdb-1.9.2/src/ssdb/ssdb_impl.cpp:215:对‘rocksdb::WriteBatch::WriteBatch(unsigned long, unsigned long)’未定义的引用
../lib/libssdb.a(ssdb_impl.cpp.o):在函数‘SSDBImpl::flushdb(Context&)’中:
/data/swapdb/swap-ssdb-1.9.2/src/ssdb/ssdb_impl.cpp:288:对‘rocksdb::WriteBatch::WriteBatch(unsigned long, unsigned long)’未定义的引用
/data/swapdb/swap-ssdb-1.9.2/src/ssdb/ssdb_impl.cpp:319:对‘rocksdb::WriteBatch::WriteBatch(unsigned long, unsigned long)’未定义的引用
../lib/libssdb.a(ssdb_impl.cpp.o):在函数‘SSDBImpl::delete_key_loop(std::string const&)’中:
/data/swapdb/swap-ssdb-1.9.2/src/ssdb/ssdb_impl.cpp:646:对‘rocksdb::WriteBatch::WriteBatch(unsigned long, unsigned long)’未定义的引用
../lib/libssdb.a(t_zset.cpp.o):/data/swapdb/swap-ssdb-1.9.2/src/ssdb/t_zset.cpp:64: more undefined references to `rocksdb::WriteBatch::WriteBatch(unsigned long, unsigned long)' follow
collect2: 错误:ld 返回 1
make[2]: *** [build/ssdb-server] 错误 1
make[1]: *** [build/SWAP_SSDB/CMakeFiles/ssdb-server.dir/all] 错误 2
make: *** [all] 错误 2

应该是前面编译rocksdb依赖时候出错了。
失败的原因我觉得可能是rocksdb依赖的snappy编译出错。
而snappy出错的原因是centos7 源里面的cmake是2.8的,而最低需求是3.1. 检查一下cmake ..的输出日志,确认一下是不是这个问题

@TimothyZhang023 我遇到了同样的问题, 我的cmake版本是3.18.4,gcc版本4.8.5