undefined symbols of "_upb_*"

51 views
Skip to first unread message

Shawn Cao

unread,
Mar 11, 2022, 9:47:04 PMMar 11
to grpc.io
Hi,

I was trying to upgrade to the latest version as of v1.44.0, also a few earlier versions like v1.33.2, I started to fail my build with these undefined symbols, I tried to include in "proto buffers/upb" lib in the linker path, but still not working, could you help take a look, please?

Thanks,
Shawn

Here is the build/link command and error messages:

[ 99%] Linking CXX executable NebulaClient
/opt/homebrew/Cellar/cmake/3.21.1/bin/cmake -E cmake_link_script CMakeFiles/NebulaClient.dir/link.txt --verbose=1
/usr/bin/g++ -Wall -Wextra -Werror -Wno-error=extern-c-compat -Wno-error=inconsistent-missing-override -Wno-error=nullability-completeness -Wno-error=sign-compare -Wno-error=unknown-warning-option -g -DNDBG -arch arm64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.1.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names -L/opt/homebrew/opt/icu4c/lib CMakeFiles/NebulaClient.dir/src/service/client/NebulaClient.cpp.o -o NebulaClient  -Wl,-rpath,/opt/homebrew/lib libNService.a grpc/src/grpc-build/libgrpc++.a grpc/src/grpc-build/libgrpc.a grpc/src/grpc-build/libgpr.a grpc/src/grpc-build/libaddress_sorting.a yomm2/src/yomm2-build/src/libyomm2.a uriparser/src/uriparser-build/liburiparser.a folly/src/folly-build/libfolly.a glog/src/glog-build/libglog.a c-ares/src/c-ares-build/lib/libcares.a /opt/homebrew/opt/zlib/lib/libz.a re2/src/re2-build/libre2.a upb/src/upb/cmake/libupb.a /usr/local/lib/libabsl_hash.a /usr/local/lib/libabsl_status.a /usr/local/lib/libabsl_statusor.a /usr/local/lib/libabsl_synchronization.a xxhash/src/xxhash/libxxhash.a gperftools/src/gperftools/lib/libtcmalloc_and_profiler.a libNIngest.a libNApi.a libNExec.a yomm2/src/yomm2-build/src/libyomm2.a glog/src/glog-build/libglog.a gperftools/src/gperftools/lib/libtcmalloc_and_profiler.a libNStorage.a uriparser/src/uriparser-build/liburiparser.a aws/src/aws-build/aws-cpp-sdk-s3/libaws-cpp-sdk-s3.a aws/src/aws-build/aws-cpp-sdk-core/libaws-cpp-sdk-core.a aws/src/aws-build/crt/aws-crt-cpp/libaws-crt-cpp.a aws/src/aws-build/lib/libaws-c-event-stream.a aws/src/aws-build/crt/aws-crt-cpp/crt/aws-c-s3/libaws-c-s3.a aws/src/aws-build/crt/aws-crt-cpp/crt/aws-c-auth/libaws-c-auth.a aws/src/aws-build/crt/aws-crt-cpp/crt/aws-c-cal/libaws-c-cal.a aws/src/aws-build/crt/aws-crt-cpp/crt/aws-c-mqtt/libaws-c-mqtt.a aws/src/aws-build/crt/aws-crt-cpp/crt/aws-c-http/libaws-c-http.a aws/src/aws-build/crt/aws-crt-cpp/crt/aws-c-compression/libaws-c-compression.a aws/src/aws-build/crt/aws-crt-cpp/crt/aws-checksums/libaws-checksums.a aws/src/aws-build/crt/aws-crt-cpp/crt/aws-c-io/libaws-c-io.a aws/src/aws-build/crt/aws-crt-cpp/crt/aws-c-common/libaws-c-common.a /opt/homebrew/opt/curl/lib/libcurl.dylib -framework corefoundation -framework security -lresolv -L/opt/homebrew/opt/icu4c/lib gcp/src/gcp-build/google/cloud/storage/libgoogle_cloud_cpp_storage.a gcp/src/gcp-build/google/cloud/libgoogle_cloud_cpp_common.a /usr/local/lib/libcrc32c.a arrow/src/arrow-build/release/libparquet.a arrow/src/arrow-build/release/libarrow.a azure/src/azure-build/sdk/storage/azure-storage-files-datalake/libazure-storage-files-datalake.a azure/src/azure-build/sdk/storage/azure-storage-blobs/libazure-storage-blobs.a azure/src/azure-build/sdk/storage/azure-storage-common/libazure-storage-common.a azure/src/azure-build/sdk/core/azure-core/libazure-core.a /opt/homebrew/opt/libxml2/lib/libxml2.dylib kafka/src/kafka-build/src-cpp/librdkafka++.a kafka/src/kafka-build/src/librdkafka.a /opt/homebrew/opt/openssl/lib/libssl.a /opt/homebrew/opt/openssl/lib/libcrypto.a libNMemory.a libNMeta.a libNType.a yaml/src/yaml-build/libyaml-cpp.a libNSurface.a libNCommon.a folly/src/folly-build/libfolly.a /opt/homebrew/opt/zlib/lib/libz.a double-conversion/src/double-conversion-build/libdouble-conversion.a /opt/homebrew/opt/libevent/lib/libevent.a /opt/homebrew/lib/libboost_context-mt.a /opt/homebrew/lib/libboost_filesystem-mt.a /opt/homebrew/lib/libboost_program_options-mt.a /opt/homebrew/lib/libboost_regex-mt.a -licudata -licui18n -licuuc /opt/homebrew/lib/libboost_system-mt.a /opt/homebrew/lib/libboost_thread-mt.a /opt/homebrew/opt/zstd/lib/libzstd.a /opt/homebrew/opt/lz4/lib/liblz4.a /opt/homebrew/opt/bzip2/lib/libbz2.a /opt/homebrew/opt/xz/lib/liblzma.a xxhash/src/xxhash/libxxhash.a /opt/homebrew/lib/libfmt.8.0.1.dylib quickjs/src/quickjs/libquickjs.a /usr/local/lib/libgflags.a /usr/local/lib/libprotobuf.a flatbuffers/src/flatbuffers-build/libflatbuffers.a thrift/src/thrift-build/lib/libthrift.a roaring/src/roaring-build/src/libroaring.a leveldb/src/leveldb-build/libleveldb.a /opt/homebrew/opt/snappy/lib/libsnappy.a /usr/local/lib/libabsl_city.a /usr/local/lib/libabsl_low_level_hash.a /usr/local/lib/libabsl_status.a /usr/local/lib/libabsl_cord.a /usr/local/lib/libabsl_bad_optional_access.a /usr/local/lib/libabsl_cordz_info.a /usr/local/lib/libabsl_cord_internal.a /usr/local/lib/libabsl_cordz_functions.a /usr/local/lib/libabsl_exponential_biased.a /usr/local/lib/libabsl_cordz_handle.a /usr/local/lib/libabsl_synchronization.a /usr/local/lib/libabsl_stacktrace.a /usr/local/lib/libabsl_symbolize.a /usr/local/lib/libabsl_debugging_internal.a /usr/local/lib/libabsl_demangle_internal.a /usr/local/lib/libabsl_graphcycles_internal.a /usr/local/lib/libabsl_malloc_internal.a /usr/local/lib/libabsl_time.a /usr/local/lib/libabsl_civil_time.a /usr/local/lib/libabsl_time_zone.a -framework CoreFoundation /usr/local/lib/libabsl_str_format_internal.a /usr/local/lib/libabsl_strings.a /usr/local/lib/libabsl_int128.a /usr/local/lib/libabsl_throw_delegate.a /usr/local/lib/libabsl_strings_internal.a /usr/local/lib/libabsl_bad_variant_access.a /usr/local/lib/libabsl_base.a /usr/local/lib/libabsl_raw_logging_internal.a /usr/local/lib/libabsl_log_severity.a /usr/local/lib/libabsl_spinlock_wait.a
Undefined symbols for architecture arm64:
  "__upb_arena_slowmalloc", referenced from:
      _upb_arena_malloc in libgrpc.a(load_balancer_api.cc.o)

      _upb_arena_malloc in libgrpc.a(xds_api.cc.o)
      _upb_arena_malloc in libgrpc.a(alts_tsi_handshaker.cc.o)
      _upb_arena_malloc in libgrpc.a(alts_handshaker_client.cc.o)
      _upb_arena_malloc in libgrpc.a(alts_tsi_utils.cc.o)
  "__upb_array_append_fallback", referenced from:
      __upb_array_append_accessor in libgrpc.a(load_balancer_api.cc.o)
      __upb_array_append_accessor in libgrpc.a(xds_api.cc.o)
      __upb_array_append_accessor in libgrpc.a(alts_handshaker_client.cc.o)
  "__upb_map_new", referenced from:
      __upb_msg_map_set in libgrpc.a(xds_api.cc.o)
      __upb_msg_map_set in libgrpc.a(alts_tsi_handshaker.cc.o)
      __upb_msg_map_set in libgrpc.a(alts_handshaker_client.cc.o)
60 warnings generated.
  "__upb_msg_addunknown", referenced from:
      grpc_core::(anonymous namespace)::PopulateBuildVersion(upb_arena*, envoy_config_core_v3_Node*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in libgrpc.a(xds_api.cc.o)
  "__upb_msg_new", referenced from:
      _grpc_health_v1_HealthCheckRequest_new in libgrpc.a(health_check_client.cc.o)
      _grpc_health_v1_HealthCheckResponse_new in libgrpc.a(health_check_client.cc.o)
      _grpc_lb_v1_LoadBalanceRequest_new in libgrpc.a(load_balancer_api.cc.o)
      _grpc_lb_v1_LoadBalanceRequest_mutable_initial_request in libgrpc.a(load_balancer_api.cc.o)
      _grpc_lb_v1_LoadBalanceRequest_mutable_client_stats in libgrpc.a(load_balancer_api.cc.o)
      _grpc_lb_v1_ClientStats_mutable_timestamp in libgrpc.a(load_balancer_api.cc.o)
      _grpc_lb_v1_ClientStats_add_calls_finished_with_drop in libgrpc.a(load_balancer_api.cc.o)
      ...
  "_upb_arena_free", referenced from:
      upb::Arena::Arena() in libgrpc.a(grpclb.cc.o)
      upb::Arena::Arena() in libgrpc.a(health_check_client.cc.o)
      upb::Arena::Arena() in libgrpc.a(xds_api.cc.o)
      upb::Arena::Arena() in libgrpc.a(backend_metric.cc.o)
      upb::Arena::Arena() in libgrpc.a(transport_security_common_api.cc.o)
      upb::Arena::Arena() in libgrpc.a(alts_tsi_handshaker.cc.o)
      upb::Arena::Arena() in libgrpc.a(alts_handshaker_client.cc.o)
      ...
  "_upb_arena_init", referenced from:
      _upb_arena_new in libgrpc.a(grpclb.cc.o)
      _upb_arena_new in libgrpc.a(health_check_client.cc.o)
      _upb_arena_new in libgrpc.a(xds_api.cc.o)
      _upb_arena_new in libgrpc.a(backend_metric.cc.o)
      _upb_arena_new in libgrpc.a(transport_security_common_api.cc.o)
      _upb_arena_new in libgrpc.a(alts_tsi_handshaker.cc.o)
      _upb_arena_new in libgrpc.a(alts_handshaker_client.cc.o)
      ...
  "_upb_decode", referenced from:
      _grpc_health_v1_HealthCheckResponse_parse in libgrpc.a(health_check_client.cc.o)
      _grpc_lb_v1_LoadBalanceResponse_parse in libgrpc.a(load_balancer_api.cc.o)
      _envoy_service_discovery_v3_DiscoveryResponse_parse in libgrpc.a(xds_api.cc.o)
      _envoy_service_load_stats_v3_LoadStatsResponse_parse in libgrpc.a(xds_api.cc.o)
      _envoy_config_listener_v3_Listener_parse in libgrpc.a(xds_api.cc.o)
      _envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_parse in libgrpc.a(xds_api.cc.o)
      _envoy_config_route_v3_RouteConfiguration_parse in libgrpc.a(xds_api.cc.o)
      ...
  "_upb_encode", referenced from:
      _grpc_health_v1_HealthCheckRequest_serialize in libgrpc.a(health_check_client.cc.o)
      _grpc_lb_v1_LoadBalanceRequest_serialize in libgrpc.a(load_balancer_api.cc.o)
      _envoy_service_discovery_v3_DiscoveryRequest_serialize in libgrpc.a(xds_api.cc.o)
      _envoy_service_load_stats_v3_LoadStatsRequest_serialize in libgrpc.a(xds_api.cc.o)
      _grpc_gcp_RpcProtocolVersions_serialize in libgrpc.a(transport_security_common_api.cc.o)
      _grpc_gcp_AltsContext_serialize in libgrpc.a(alts_tsi_handshaker.cc.o)
      _grpc_gcp_HandshakerReq_serialize in libgrpc.a(alts_handshaker_client.cc.o)
      ...
  "_upb_strtable_insert3", referenced from:
      __upb_map_set in libgrpc.a(xds_api.cc.o)
      __upb_map_set in libgrpc.a(alts_tsi_handshaker.cc.o)
      __upb_map_set in libgrpc.a(alts_handshaker_client.cc.o)
  "_upb_strtable_remove3", referenced from:
      __upb_map_set in libgrpc.a(xds_api.cc.o)
      __upb_map_set in libgrpc.a(alts_tsi_handshaker.cc.o)
      __upb_map_set in libgrpc.a(alts_handshaker_client.cc.o)
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [NebulaClient] Error 1
make[1]: *** [CMakeFiles/NebulaClient.dir/all] Error 2

Shawn Cao

unread,
Mar 11, 2022, 11:59:17 PMMar 11
to grpc.io
Never mind, I figured it out. 

For future reference: 

gRPC already builds libupb from its third-party which generates libupb.a together with all other core libs. The way I did was build protobuffers/upb from GitHub to produce a different libupb.a and put it in the link path. 
After checking how GRPC builds it, it's different which includes two more generated files from /grpc itself: https://github.com/grpc/grpc/blob/master/CMakeLists.txt#L3964-L3965

Obviously, the lib I provided will miss those symbols. It's my fault. 

Best,
Shawn
https://columns.ai - the modern BI, simple, fast, and accessible.


--
You received this message because you are subscribed to a topic in the Google Groups "grpc.io" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/grpc-io/MGL8JDK9olM/unsubscribe.
To unsubscribe from this group and all its topics, send an email to grpc-io+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/grpc-io/ac523598-39a8-4f01-967b-99c9a1e45cb2n%40googlegroups.com.

Ashima Gupta

unread,
Jun 22, 2022, 4:57:46 AMJun 22
to grpc.io
Hi,

I am getting this error while loading my sample library.

 undefined symbol: upb_Arena_Free

I have linked libupb.a already. Please suggest.
Reply all
Reply to author
Forward
0 new messages