baidu / braft

An industrial-grade C++ implementation of RAFT consensus algorithm based on brpc, widely used inside Baidu to build highly-available distributed systems.
Apache License 2.0
3.95k stars 881 forks source link

fix build test_log linked error #385

Open nmreadelf opened 1 year ago

nmreadelf commented 1 year ago

fix build test_log linked error

[100%] Linking CXX executable test_log
/usr/bin/ld: /home/work/vcpkg/installed/x64-linux/debug/lib/libbrpc.a(thrift_protocol.cpp.o): in function `apache::thrift::protocol::TProtocol::TProtocol(std::shared_ptr<apache::thrift::transport::TTransport>)':
/home/elf/vcpkg/installed/x64-linux/include/thrift/protocol/TProtocol.h:555: undefined reference to `vtable for apache::thrift::protocol::TProtocol'
/usr/bin/ld: /home/work/vcpkg/installed/x64-linux/debug/lib/libbrpc.a(thrift_protocol.cpp.o): in function `brpc::policy::ReadThriftException(butil::IOBuf const&, apache::thrift::TApplicationException*)':
nmreadelf commented 1 year ago

i changed to another machine to build braft, same issue

FAILED: test/test_ballot_box 
: && /usr/bin/c++ -Wno-aligned-new  -DBRPC_WITH_GLOG=1 -DGFLAGS_NS=google -DBTHREAD_USE_FAST_PTHREAD_MUTEX -D__const__=__unused__ -D_GNU_SOURCE -DUSE_SYMBOLIZE -DNO_TCMALLOC -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -DBRAFT_REVISION=\"99a12e0\" -D__STRICT_ANSI__ -g -msse4 -msse4.2 -O2 -pipe -Wall -W -fPIC -fstrict-aliasing -Wno-invalid-offsetof -Wno-unused-parameter -Wno-reserved-user-defined-literal -fno-omit-frame-pointer -DGFLAGS_NS=google -D__const__=__unused__ -D_GNU_SOURCE -DUSE_SYMBOLIZE -DNO_TCMALLOC -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -DUNIT_TEST -g -Dprivate=public -Dprotected=public -D__STRICT_ANSI__ -include sstream_workaround.h -O2 -pipe -Wall -W -fPIC -fstrict-aliasing -Wno-invalid-offsetof -Wno-unused-parameter -fno-omit-frame-pointer -Wno-unused-result -g -rdynamic src/CMakeFiles/OBJ_LIB.dir/braft/ballot.cpp.o src/CMakeFiles/OBJ_LIB.dir/braft/ballot_box.cpp.o src/CMakeFiles/OBJ_LIB.dir/braft/builtin_service_impl.cpp.o src/CMakeFiles/OBJ_LIB.dir/braft/cli.cpp.o src/CMakeFiles/OBJ_LIB.dir/braft/cli_service.cpp.o src/CMakeFiles/OBJ_LIB.dir/braft/closure_queue.cpp.o src/CMakeFiles/OBJ_LIB.dir/braft/configuration.cpp.o src/CMakeFiles/OBJ_LIB.dir/braft/configuration_manager.cpp.o src/CMakeFiles/OBJ_LIB.dir/braft/file_reader.cpp.o src/CMakeFiles/OBJ_LIB.dir/braft/file_service.cpp.o src/CMakeFiles/OBJ_LIB.dir/braft/file_system_adaptor.cpp.o src/CMakeFiles/OBJ_LIB.dir/braft/fsm_caller.cpp.o src/CMakeFiles/OBJ_LIB.dir/braft/fsync.cpp.o src/CMakeFiles/OBJ_LIB.dir/braft/lease.cpp.o src/CMakeFiles/OBJ_LIB.dir/braft/log.cpp.o src/CMakeFiles/OBJ_LIB.dir/braft/log_entry.cpp.o src/CMakeFiles/OBJ_LIB.dir/braft/log_manager.cpp.o src/CMakeFiles/OBJ_LIB.dir/braft/memory_log.cpp.o src/CMakeFiles/OBJ_LIB.dir/braft/node.cpp.o src/CMakeFiles/OBJ_LIB.dir/braft/node_manager.cpp.o src/CMakeFiles/OBJ_LIB.dir/braft/protobuf_file.cpp.o src/CMakeFiles/OBJ_LIB.dir/braft/raft.cpp.o src/CMakeFiles/OBJ_LIB.dir/braft/raft_meta.cpp.o src/CMakeFiles/OBJ_LIB.dir/braft/raft_service.cpp.o src/CMakeFiles/OBJ_LIB.dir/braft/remote_file_copier.cpp.o src/CMakeFiles/OBJ_LIB.dir/braft/repeated_timer_task.cpp.o src/CMakeFiles/OBJ_LIB.dir/braft/replicator.cpp.o src/CMakeFiles/OBJ_LIB.dir/braft/route_table.cpp.o src/CMakeFiles/OBJ_LIB.dir/braft/snapshot.cpp.o src/CMakeFiles/OBJ_LIB.dir/braft/snapshot_executor.cpp.o src/CMakeFiles/OBJ_LIB.dir/braft/snapshot_throttle.cpp.o src/CMakeFiles/OBJ_LIB.dir/braft/storage.cpp.o src/CMakeFiles/OBJ_LIB.dir/braft/util.cpp.o src/CMakeFiles/OBJ_LIB.dir/__/braft/builtin_service.pb.cc.o src/CMakeFiles/OBJ_LIB.dir/__/braft/cli.pb.cc.o src/CMakeFiles/OBJ_LIB.dir/__/braft/enum.pb.cc.o src/CMakeFiles/OBJ_LIB.dir/__/braft/errno.pb.cc.o src/CMakeFiles/OBJ_LIB.dir/__/braft/file_service.pb.cc.o src/CMakeFiles/OBJ_LIB.dir/__/braft/local_file_meta.pb.cc.o src/CMakeFiles/OBJ_LIB.dir/__/braft/local_storage.pb.cc.o src/CMakeFiles/OBJ_LIB.dir/__/braft/raft.pb.cc.o test/CMakeFiles/test_ballot_box.dir/test_ballot_box.cpp.o -o test/test_ballot_box  /home/elf/repo/vcpkg/installed/x64-linux/debug/lib/manual-link/libgtest_main.a  /home/elf/repo/vcpkg/installed/x64-linux/debug/lib/libgtest.a  /home/elf/repo/vcpkg/installed/x64-linux/debug/lib/libbrpc.a  /home/elf/repo/vcpkg/installed/x64-linux/lib/libgflags.a  /home/elf/repo/vcpkg/installed/x64-linux/debug/lib/libglog.a  /home/elf/repo/vcpkg/installed/x64-linux/debug/lib/libprotobufd.a  /home/elf/repo/vcpkg/installed/x64-linux/debug/lib/libleveldb.a  /home/elf/repo/vcpkg/installed/x64-linux/debug/lib/libssl.a  /home/elf/repo/vcpkg/installed/x64-linux/debug/lib/libcrypto.a  -ldl  /home/elf/repo/vcpkg/installed/x64-linux/debug/lib/libcrypto.a  -ldl  -lz  -lrt && :
/usr/bin/ld: /home/elf/repo/vcpkg/installed/x64-linux/debug/lib/libbrpc.a(thrift_protocol.cpp.o): in function `apache::thrift::protocol::TProtocol::TProtocol(std::shared_ptr<apache::thrift::transport::TTransport>)':
/home/elf/repo/vcpkg/installed/x64-linux/include/thrift/protocol/TProtocol.h:555: undefined reference to `vtable for apache::thrift::protocol::TProtocol'
/usr/bin/ld: /home/elf/repo/vcpkg/installed/x64-linux/debug/lib/libbrpc.a(thrift_protocol.cpp.o): in function `brpc::policy::ReadThriftException(butil::IOBuf const&, apache::thrift::TApplicationException*)':
/home/elf/repo/vcpkg/buildtrees/brpc/src/1.4.0-7a8b92baf1.clean/src/brpc/policy/thrift_protocol.cpp:182: undefined reference to `apache::thrift::TApplicationException::read(apache::thrift::protocol::TProtocol*)'
/usr/bin/ld: /home/elf/repo/vcpkg/installed/x64-linux/debug/lib/libbrpc.a(thrift_protocol.cpp.o): in function `apache::thrift::protocol::TProtocolDefaults::~TProtocolDefaults()':
/home/elf/repo/vcpkg/installed/x64-linux/include/thrift/protocol/TVirtualProtocol.h:42: undefined reference to `apache::thrift::protocol::TProtocol::~TProtocol()'
nmreadelf commented 1 year ago

have anyone take a look at my PR?