braft
braft copied to clipboard
编译Braft错误
编译 brpc成功;
braft 版本: 1.1.2;
brpc 版本:1.0.0
但是编译braft的时候,报错:
/data1/braft/incubator-brpc-1.0.0/build/output/lib/libbrpc.a(thrift_protocol.cpp.o): In function brpc::policy::ReadThriftException(butil::IOBuf const&, apache::thrift::TApplicationException*)': /data1/braft/incubator-brpc-1.0.0/src/brpc/policy/thrift_protocol.cpp:178: undefined reference to
apache::thrift::TApplicationException::read(apache::thrift::protocol::TProtocol*)'
/data1/braft/incubator-brpc-1.0.0/build/output/lib/libbrpc.a(thrift_protocol.cpp.o): In function brpc::policy::ThriftClosure::DoRun()': /data1/braft/incubator-brpc-1.0.0/src/brpc/policy/thrift_protocol.cpp:289: undefined reference to
apache::thrift::TApplicationException::write(apache::thrift::protocol::TProtocol*) const'
/data1/braft/incubator-brpc-1.0.0/build/output/lib/libbrpc.a(thrift_protocol.cpp.o): In function apache::thrift::transport::TMemoryBuffer::TMemoryBuffer(unsigned char*, unsigned int, apache::thrift::transport::TMemoryBuffer::MemoryPolicy)': /usr/include/thrift/transport/TBufferTransports.h:533: undefined reference to
vtable for apache::thrift::transport::TMemoryBuffer'
/data1/braft/incubator-brpc-1.0.0/build/output/lib/libbrpc.a(thrift_protocol.cpp.o): In function boost::detail::sp_if_not_array<apache::thrift::transport::TMemoryBuffer>::type boost::make_shared<apache::thrift::transport::TMemoryBuffer>()': /usr/include/thrift/transport/TBufferTransports.h:509: undefined reference to
vtable for apache::thrift::transport::TMemoryBuffer'
collect2: error: ld returned 1 exit status
make[2]: *** [output/bin/braft_cli] Error 1
make[1]: *** [tools/CMakeFiles/braft_cli.dir/all] Error 2
make: *** [all] Error 2
我遇到相同的错误,我将brpc版本从1.1.2还到0.9.7解决
这个看着是thrift依赖的问题
我使用brpc 1.1.2 编译时加上 --with-thrift选项, 同时将 thrift 版本按照brpc要求调整到1.1.0 依旧会出现 上述问题.
最后还是将brpc版本调整到0.9.7才可以正常编译braft
完整的Log 可以参看 issue