My issue seems to be resolved by adding wsock32.lib ws2_32.lib to the linker.
在2022年3月24日星期四 UTC+8 01:12:49<pixel...@gmail.com> 写道: > Without more information on how you're building, we can't really help. > Please share with us an example project exhibiting the problem. > > On Tuesday, March 22, 2022 at 8:39:14 AM UTC-7 Parker Huang wrote: > >> Hi, have you solved your compile or link issue? >> I am stuck with the same linker issue (with more linker issues) and ask >> if you know the solution: >> https://groups.google.com/g/grpc-io/c/g1Xf4rodIo0/m/_s-Kh58FBQAJ >> >> Thanks! >> 在2022年3月9日星期三 UTC+8 01:44:48<veb...@google.com> 写道: >> >>> Would you elaborate a bit about how to build it? If you're using cmake >>> to build gRPC and your application, you shouldn't need to specify linker >>> options. >>> Please checkout https://grpc.io/docs/languages/cpp/quickstart/ too. >>> On Wednesday, January 19, 2022 at 2:27:04 AM UTC-8 cansu gençoğlu wrote: >>> >>>> I changed the order of the libs while linking and the only remaining >>>> error is below. As I understand this >>>> `absl::lts_20210324::Mutex::~Mutex()' function is in >>>> libabsl_synchronization.a that I already link this library. Any ideas? >>>> >>>> Interface.grpc.pb.cc.o: in function >>>> `grpc::CompletionQueue::~CompletionQueue()': >>>> /home/cansuge/CLionProjects/Projects/rpc/lib/includes/grpcpp/impl/codegen/completion_queue.h:119: >>>> >>>> undefined reference to `absl::lts_20210324::Mutex::~Mutex()' >>>> /usr/bin/ld: CMakeFiles/test.dir/src/MPUInterface.grpc.pb.cc.o: in >>>> function >>>> `grpc::CompletionQueue::CompletionQueue(grpc_completion_queue_attributes >>>> const&)': >>>> >>>> >>>> Best Regards, >>>> >>>> Cansu >>>> 18 Ocak 2022 Salı tarihinde saat 16:29:03 UTC+1 itibarıyla cansu >>>> gençoğlu şunları yazdı: >>>> >>>>> Hi to all, >>>>> >>>>> I am trying to compile basic grpc cpp server and client test code >>>>> without installation of the library. I compile all the libraries and link >>>>> to my project I believe. However, I got these errors while linking stage. >>>>> May be I forgot to link some libs or add include files. Any comment would >>>>> help. Thanks. >>>>> >>>>> >>>>> /usr/bin/ld: CMakeFiles/test.dir/src/MPUInterface.grpc.pb.cc.o: in >>>>> function `grpc::CompletionQueue::~CompletionQueue()': >>>>> /home/cansuge/CLionProjects/Projects/rpc/lib/includes/grpcpp/impl/codegen/completion_queue.h:119: >>>>> >>>>> *undefined reference to `absl::lts_20210324::Mutex::~Mutex()'* >>>>> /usr/bin/ld: CMakeFiles/test.dir/src/MPUInterface.grpc.pb.cc.o: in >>>>> function >>>>> `grpc::CompletionQueue::CompletionQueue(grpc_completion_queue_attributes >>>>> const&)': >>>>> /home/cansuge/CLionProjects/Projects/rpc/lib/includes/grpcpp/impl/codegen/completion_queue.h:253: >>>>> >>>>> *undefined reference to `absl::lts_20210324::Mutex::~Mutex()'* >>>>> /usr/bin/ld: >>>>> /home/cansuge/CLionProjects/Projects/rpc/lib/libnew/libgrpc.a(cluster.upbdefs.c.o):(.data.rel+0x28): >>>>> >>>>> *undefined reference to >>>>> `envoy_config_core_v3_config_source_proto_upbdefinit'* >>>>> /usr/bin/ld: >>>>> /home/cansuge/CLionProjects/Projects/rpc/lib/libnew/libgrpc.a(extension.upbdefs.c.o):(.data.rel+0x0): >>>>> >>>>> *undefined reference to >>>>> `envoy_config_core_v3_config_source_proto_upbdefinit'* >>>>> /usr/bin/ld: >>>>> /home/cansuge/CLionProjects/Projects/rpc/lib/libnew/libgrpc.a(health_check.upbdefs.c.o):(.data.rel+0x8): >>>>> >>>>> *undefined reference to >>>>> `envoy_config_core_v3_event_service_config_proto_upbdefinit'* >>>>> /usr/bin/ld: >>>>> /home/cansuge/CLionProjects/Projects/rpc/lib/libnew/libgrpc.a(endpoint_components.upbdefs.c.o):(.data.rel+0x10): >>>>> >>>>> undefined reference to >>>>> `envoy_config_core_v3_config_source_proto_upbdefinit' >>>>> /usr/bin/ld: >>>>> /home/cansuge/CLionProjects/Projects/rpc/lib/libnew/libgrpc.a(route.upbdefs.c.o):(.data.rel+0x8): >>>>> >>>>> undefined reference to >>>>> `envoy_config_core_v3_config_source_proto_upbdefinit' >>>>> /usr/bin/ld: >>>>> /home/cansuge/CLionProjects/Projects/rpc/lib/libnew/libgrpc.a(http_connection_manager.upbdefs.c.o):(.data.rel+0x10): >>>>> >>>>> undefined reference to >>>>> `envoy_config_core_v3_config_source_proto_upbdefinit' >>>>> /usr/bin/ld: >>>>> /home/cansuge/CLionProjects/Projects/rpc/lib/libnew/libgrpc.a(secret.upbdefs.c.o):(.data.rel+0x8): >>>>> >>>>> undefined reference to >>>>> `envoy_config_core_v3_config_source_proto_upbdefinit' >>>>> /usr/bin/ld: >>>>> /home/cansuge/CLionProjects/Projects/rpc/lib/libnew/libabsl_cordz_info.a(cordz_info.cc.o): >>>>> >>>>> in function >>>>> `absl::lts_20211102::cord_internal::CordzInfo::Head(absl::lts_20211102::cord_internal::CordzSnapshot >>>>> >>>>> const&)': >>>>> cordz_info.cc:(.text+0xc43): *undefined reference to >>>>> `absl::lts_20211102::cord_internal::CordzHandle::DiagnosticsHandleIsSafeToInspect(absl::lts_20211102::cord_internal::CordzHandle >>>>> >>>>> const*) const'* >>>>> /usr/bin/ld: >>>>> /home/cansuge/CLionProjects/Projects/rpc/lib/libnew/libabsl_cordz_info.a(cordz_info.cc.o): >>>>> >>>>> in function >>>>> `absl::lts_20211102::cord_internal::CordzInfo::Next(absl::lts_20211102::cord_internal::CordzSnapshot >>>>> >>>>> const&) const': >>>>> cordz_info.cc:(.text+0xd65): undefined reference to >>>>> `absl::lts_20211102::cord_internal::CordzHandle::DiagnosticsHandleIsSafeToInspect(absl::lts_20211102::cord_internal::CordzHandle >>>>> >>>>> const*) const' >>>>> /usr/bin/ld: cordz_info.cc:(.text+0xd8c): undefined reference to >>>>> `absl::lts_20211102::cord_internal::CordzHandle::DiagnosticsHandleIsSafeToInspect(absl::lts_20211102::cord_internal::CordzHandle >>>>> >>>>> const*) const' >>>>> /usr/bin/ld: >>>>> /home/cansuge/CLionProjects/Projects/rpc/lib/libnew/libabsl_cordz_info.a(cordz_info.cc.o): >>>>> >>>>> in function >>>>> `absl::lts_20211102::cord_internal::CordzInfo::CordzInfo(absl::lts_20211102::cord_internal::CordRep*, >>>>> >>>>> absl::lts_20211102::cord_internal::CordzInfo const*, >>>>> absl::lts_20211102::cord_internal::CordzUpdateTracker::MethodIdentifier)': >>>>> cordz_info.cc:(.text+0x12d8): undefined reference to >>>>> `absl::lts_20211102::cord_internal::CordzHandle::~CordzHandle()' >>>>> /usr/bin/ld: >>>>> /home/cansuge/CLionProjects/Projects/rpc/lib/libnew/libabsl_cordz_info.a(cordz_info.cc.o): >>>>> >>>>> in function `absl::lts_20211102::cord_internal::CordzInfo::~CordzInfo()': >>>>> cordz_info.cc:(.text+0x1350): undefined reference to >>>>> `absl::lts_20211102::cord_internal::CordzHandle::~CordzHandle()' >>>>> /usr/bin/ld: >>>>> /home/cansuge/CLionProjects/Projects/rpc/lib/libnew/libabsl_cordz_info.a(cordz_info.cc.o): >>>>> >>>>> in function `absl::lts_20211102::cord_internal::CordzInfo::Untrack()': >>>>> cordz_info.cc:(.text+0x16b8): undefined reference to >>>>> `absl::lts_20211102::cord_internal::CordzHandle::SafeToDelete() const' >>>>> /usr/bin/ld: cordz_info.cc:(.text+0x1739): undefined reference to >>>>> `absl::lts_20211102::cord_internal::CordzHandle::Delete(absl::lts_20211102::cord_internal::CordzHandle*)' >>>>> /usr/bin/ld: >>>>> /home/cansuge/CLionProjects/Projects/rpc/lib/libnew/libabsl_cordz_info.a(cordz_info.cc.o): >>>>> >>>>> in function >>>>> `absl::lts_20211102::cord_internal::CordzHandle::CordzHandle()': >>>>> cordz_info.cc:(.text._ZN4absl12lts_2021110213cord_internal11CordzHandleC2Ev[_ZN4absl12lts_2021110213cord_internal11CordzHandleC5Ev]+0x1d): >>>>> >>>>> undefined reference to >>>>> `absl::lts_20211102::cord_internal::CordzHandle::CordzHandle(bool)' >>>>> /usr/bin/ld: >>>>> /home/cansuge/CLionProjects/Projects/rpc/lib/libnew/libabsl_cordz_info.a(cordz_info.cc.o):(.data.rel.ro._ZTIN4absl12lts_2021110213cord_internal9CordzInfoE[_ZTIN4absl12lts_2021110213cord_internal9CordzInfoE]+0x10): >>>>> >>>>> *undefined reference to `typeinfo for >>>>> absl::lts_20211102::cord_internal::CordzHandle'* >>>>> /usr/bin/ld: >>>>> /home/cansuge/CLionProjects/Projects/rpc/lib/libnew/libabsl_hash.a(hash.cc.o): >>>>> >>>>> in function >>>>> `absl::lts_20211102::hash_internal::MixingHashState::CombineLargeContiguousImpl32(unsigned >>>>> >>>>> long, unsigned char const*, unsigned long)': >>>>> hash.cc:(.text+0x4e): undefined reference to >>>>> `absl::lts_20211102::hash_internal::CityHash32(char const*, unsigned >>>>> long)' >>>>> /usr/bin/ld: >>>>> /home/cansuge/CLionProjects/Projects/rpc/lib/libnew/libabsl_hash.a(hash.cc.o): >>>>> >>>>> in function >>>>> `absl::lts_20211102::hash_internal::MixingHashState::CombineContiguousImpl(unsigned >>>>> >>>>> long, unsigned char const*, unsigned long, std::integral_constant<int, >>>>> 4>)': >>>>> hash.cc:(.text._ZN4absl12lts_2021110213hash_internal15MixingHashState21CombineContiguousImplEmPKhmSt17integral_constantIiLi4EE[_ZN4absl12lts_2021110213hash_internal15MixingHashState21CombineContiguousImplEmPKhmSt17integral_constantIiLi4EE]+0x63): >>>>> >>>>> undefined reference to >>>>> `absl::lts_20211102::hash_internal::CityHash32(char >>>>> const*, unsigned long)' >>>>> /usr/bin/ld: >>>>> /home/cansuge/CLionProjects/Projects/rpc/lib/libnew/libabsl_random_internal_randen_hwaes_impl.a(randen_hwaes.cc.o): >>>>> >>>>> in function `absl::lts_20211102::random_internal::RandenHwAes::GetKeys()': >>>>> randen_hwaes.cc:(.text+0xbbf): *undefined reference to >>>>> `absl::lts_20211102::random_internal::kRandenRoundKeys'* >>>>> /usr/bin/ld: >>>>> /home/cansuge/CLionProjects/Projects/rpc/lib/libnew/libabsl_random_internal_randen_slow.a(randen_slow.cc.o): >>>>> >>>>> in function `absl::lts_20211102::random_internal::RandenSlow::GetKeys()': >>>>> randen_slow.cc:(.text+0xb): undefined reference to >>>>> `absl::lts_20211102::random_internal::kRandenRoundKeys' >>>>> /usr/bin/ld: >>>>> /home/cansuge/CLionProjects/Projects/rpc/lib/libnew/libabsl_stacktrace.a(stacktrace.cc.o): >>>>> >>>>> in function `void** NextStackFrame<false, false>(void**, void const*, >>>>> unsigned long, unsigned long)': >>>>> stacktrace.cc:(.text+0xad4): undefined reference to >>>>> `absl::lts_20211102::debugging_internal::AddressIsReadable(void const*)' >>>>> /usr/bin/ld: >>>>> /home/cansuge/CLionProjects/Projects/rpc/lib/libnew/libabsl_stacktrace.a(stacktrace.cc.o): >>>>> >>>>> in function `void** NextStackFrame<false, true>(void**, void const*, >>>>> unsigned long, unsigned long)': >>>>> stacktrace.cc:(.text+0xb5d): undefined reference to >>>>> `absl::lts_20211102::debugging_internal::AddressIsReadable(void const*)' >>>>> /usr/bin/ld: >>>>> /home/cansuge/CLionProjects/Projects/rpc/lib/libnew/libabsl_symbolize.a(symbolize.cc.o): >>>>> >>>>> in function `absl::lts_20211102::InitializeSymbolizer(char const*)': >>>>> symbolize.cc:(.text+0x11): undefined reference to >>>>> `absl::lts_20211102::debugging_internal::VDSOSupport::Init()' >>>>> /usr/bin/ld: >>>>> /home/cansuge/CLionProjects/Projects/rpc/lib/libnew/libabsl_symbolize.a(symbolize.cc.o): >>>>> >>>>> in function >>>>> `absl::lts_20211102::debugging_internal::DemangleInplace(char*, >>>>> int, char*, int)': >>>>> symbolize.cc:(.text+0x2627): undefined reference to >>>>> `absl::lts_20211102::debugging_internal::Demangle(char const*, char*, >>>>> int)' >>>>> /usr/bin/ld: >>>>> /home/cansuge/CLionProjects/Projects/rpc/lib/libnew/libabsl_symbolize.a(symbolize.cc.o): >>>>> >>>>> in function `absl::lts_20211102::debugging_internal::(anonymous >>>>> namespace)::Symbolizer::GetSymbol(void const*)': >>>>> symbolize.cc:(.text+0x327b): undefined reference to >>>>> `absl::lts_20211102::debugging_internal::VDSOSupport::VDSOSupport()' >>>>> /usr/bin/ld: symbolize.cc:(.text+0x32a9): undefined reference to >>>>> `absl::lts_20211102::debugging_internal::VDSOSupport::LookupSymbolByAddress(void >>>>> >>>>> const*, absl::lts_20211102::debugging_internal::ElfMemImage::SymbolInfo*) >>>>> const' >>>>> collect2: error: ld returned 1 exit status >>>>> ninja: build stopped: subcommand failed. >>>>> >>>>> >>>>> >>>>> >>>>> I also add the command below. >>>>> >>>>> >>>>> : && /usr/bin/c++ -g CMakeFiles/test.dir/test/RPCClient.cpp.o >>>>> CMakeFiles/test.dir/test/test.cpp.o >>>>> CMakeFiles/test.dir/src/MPUInterface.grpc.pb.cc.o >>>>> CMakeFiles/test.dir/src/MPUInterface.pb.cc.o >>>>> CMakeFiles/test.dir/src/MPUInterfaceService.cpp.o >>>>> CMakeFiles/test.dir/src/RPCManager.cpp.o -o test >>>>> -L/home/cansuge/CLionProjects/Projects/rpc/test >>>>> -L/home/cansuge/CLionProjects/Projects/rpc/lib/libnew >>>>> -Wl,-rpath,/home/cansuge/CLionProjects/Projects/rpc/test:/home/cansuge/CLionProjects/Projects/rpc/lib/libnew >>>>> >>>>> -lprotobuf -lgtest -lpthread -lgrpc++_unsecure -lgrpc++ >>>>> -Wl,-Bstatic >>>>> -lgrpc++_reflection -lupb -Wl,-Bdynamic -labsl_base -Wl,-Bstatic >>>>> -labsl_bad_any_cast_impl -labsl_bad_optional_access >>>>> -labsl_bad_variant_access -labsl_base -labsl_city -labsl_civil_time >>>>> -labsl_cord -labsl_cord_internal -labsl_cordz_functions >>>>> -labsl_cordz_handle -labsl_cordz_info -labsl_cordz_sample_token >>>>> -labsl_debugging_internal -labsl_demangle_internal >>>>> -labsl_examine_stack >>>>> -labsl_exponential_biased -labsl_failure_signal_handler -labsl_flags >>>>> -labsl_flags_commandlineflag -labsl_flags_commandlineflag_internal >>>>> -labsl_flags_config -labsl_flags_internal -labsl_flags_marshalling >>>>> -labsl_flags_parse -labsl_flags_private_handle_accessor >>>>> -labsl_flags_program_name -labsl_flags_reflection -labsl_flags_usage >>>>> -labsl_flags_usage_internal -labsl_graphcycles_internal -labsl_hash >>>>> -labsl_hashtablez_sampler -labsl_int128 -labsl_leak_check >>>>> -labsl_leak_check_disable -labsl_log_severity -labsl_low_level_hash >>>>> -labsl_malloc_internal -labsl_periodic_sampler >>>>> -labsl_random_distributions >>>>> -labsl_random_internal_distribution_test_util >>>>> -labsl_random_internal_platform -labsl_random_internal_pool_urbg >>>>> -labsl_random_internal_randen -labsl_random_internal_randen_hwaes >>>>> -labsl_random_internal_randen_hwaes_impl >>>>> -labsl_random_internal_randen_slow -labsl_random_internal_seed_material >>>>> -labsl_random_seed_gen_exception -labsl_random_seed_sequences >>>>> -labsl_raw_hash_set -labsl_raw_logging_internal -labsl_scoped_set_env >>>>> -labsl_spinlock_wait -labsl_stacktrace -labsl_status -labsl_statusor >>>>> -labsl_str_format_internal -labsl_strerror -labsl_strings >>>>> -labsl_strings_internal -labsl_symbolize -labsl_synchronization >>>>> -labsl_throw_delegate -labsl_time -labsl_time_zone -laddress_sorting >>>>> -lgpr -lgrpc++ -lgrpc++_alts -lgrpc++_error_details >>>>> -lgrpc++_reflection -lgrpc++_unsecure -lgrpc -lgrpc_plugin_support >>>>> -lgrpc_unsecure -lgrpcpp_channelz -lprotobuf -lprotobuf-lite >>>>> -lprotoc >>>>> -lre2 -lssl -lcrypto -lcares -lprotoc -lprotobuf -lprotobuf-lite >>>>> -lre2 -ltesting -lz -lupb -Wl,-Bdynamic -labsl_base -Wl,-Bstatic >>>>> -labsl_bad_any_cast_impl -labsl_bad_optional_access >>>>> -labsl_bad_variant_access -labsl_base -labsl_city -labsl_civil_time >>>>> -labsl_cord -labsl_cord_internal -labsl_cordz_functions >>>>> -labsl_cordz_handle -labsl_cordz_info -labsl_cordz_sample_token >>>>> -labsl_debugging_internal -labsl_demangle_internal >>>>> -labsl_examine_stack >>>>> -labsl_exponential_biased -labsl_failure_signal_handler -labsl_flags >>>>> -labsl_flags_commandlineflag -labsl_flags_commandlineflag_internal >>>>> -labsl_flags_config -labsl_flags_internal -labsl_flags_marshalling >>>>> -labsl_flags_parse -labsl_flags_private_handle_accessor >>>>> -labsl_flags_program_name -labsl_flags_reflection -labsl_flags_usage >>>>> -labsl_flags_usage_internal -labsl_graphcycles_internal -labsl_hash >>>>> -labsl_hashtablez_sampler -labsl_int128 -labsl_leak_check >>>>> -labsl_leak_check_disable -labsl_log_severity -labsl_low_level_hash >>>>> -labsl_malloc_internal -labsl_periodic_sampler >>>>> -labsl_random_distributions >>>>> -labsl_random_internal_distribution_test_util >>>>> -labsl_random_internal_platform -labsl_random_internal_pool_urbg >>>>> -labsl_random_internal_randen -labsl_random_internal_randen_hwaes >>>>> -labsl_random_internal_randen_hwaes_impl >>>>> -labsl_random_internal_randen_slow -labsl_random_internal_seed_material >>>>> -labsl_random_seed_gen_exception -labsl_random_seed_sequences >>>>> -labsl_raw_hash_set -labsl_raw_logging_internal -labsl_scoped_set_env >>>>> -labsl_spinlock_wait -labsl_stacktrace -labsl_status -labsl_statusor >>>>> -labsl_str_format_internal -labsl_strerror -labsl_strings >>>>> -labsl_strings_internal -labsl_symbolize -labsl_synchronization >>>>> -labsl_throw_delegate -labsl_time -labsl_time_zone -laddress_sorting >>>>> -lgpr -lgrpc++ -lgrpc++_alts -lgrpc++_error_details >>>>> -lgrpc++_unsecure >>>>> -lgrpc -lgrpc_plugin_support -lgrpc_unsecure -lgrpcpp_channelz >>>>> -lprotobuf -lprotobuf-lite -lprotoc -lre2 -lssl -lcrypto -lcares >>>>> -lprotobuf -lprotobuf-lite -lprotoc -lre2 -lssl -lcrypto -lcares >>>>> -ltesting -lz -Wl,-Bdynamic && : >>>>> >>>> -- You received this message because you are subscribed to the Google Groups "grpc.io" group. To unsubscribe from this group and stop receiving emails from it, send an email to grpc-io+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/grpc-io/f3cacfb7-fe47-445a-86fa-d026e1365885n%40googlegroups.com.