gRPC error while installing in OSX el captain

423 views
Skip to first unread message

Bugsfunny

unread,
May 24, 2017, 3:14:25 AM5/24/17
to grpc.io
I installed grpc using the below commands : 

git clone -b $(curl -L http://grpc.io/release) https://github.com/grpc/grpc
cd grpc
git checkout
-b 1.2.0
git submodule
foreach git clean -xfd
git submodule update
--init
cd third_party
/protobuf
./autogen.sh
./configure
make
-j2
sudo make install
cd
../cares/cares/
./buildconf
./configure
make
-j2
make ahost adig acountry
make install
cd
../..
git clean
-xfd
make
-j2          (I get the below error while executing this command)
sudo make install      
(did not execute this command)



ERRORS :



[LD]      Linking /Users/anambia/Downloads/Softwares/grpc/libs/opt/libgrpc.dylib
[LD]      Linking /Users/anambia/Downloads/Softwares/grpc/libs/opt/libgrpc_cronet.dylib
[AR]      Creating /Users/anambia/Downloads/Softwares/grpc/libs/opt/libgrpc.a
[AR]      Creating /Users/anambia/Downloads/Softwares/grpc/libs/opt/libgrpc_cronet.a
[HOSTLD]  Linking /Users/anambia/Downloads/Softwares/grpc/bins/opt/grpc_cpp_plugin
Undefined symbols for architecture x86_64:
 
"google::protobuf::io::StringOutputStream::StringOutputStream(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*)", referenced from:
     
ProtoBufFile::CreatePrinter(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*) const in cpp_plugin.o
 
"google::protobuf::io::Printer::Print(std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > > const&, char const*)", referenced from:
     
ProtoBufPrinter::Print(std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > > const&, char const*) in cpp_plugin.o
 
"google::protobuf::FileDescriptor::GetSourceLocation(std::__1::vector<int, std::__1::allocator<int> > const&, google::protobuf::SourceLocation*) const", referenced from:
     
void grpc_generator::GetComment<google::protobuf::FileDescriptor>(google::protobuf::FileDescriptor const*, grpc_generator::CommentType, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >*) in cpp_plugin.o
 
"google::protobuf::compiler::CodeGenerator::GenerateAll(std::__1::vector<google::protobuf::FileDescriptor const*, std::__1::allocator<google::protobuf::FileDescriptor const*> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, google::protobuf::compiler::GeneratorContext*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*) const", referenced from:
      vtable
for CppGrpcGenerator in cpp_plugin.o
ld
: symbol(s) not found for architecture x86_64
clang
: error: linker command failed with exit code 1 (use -v to see invocation)
make
: *** [/Users/anambia/Downloads/Softwares/grpc/bins/opt/grpc_cpp_plugin] Error 1
make
: *** Waiting for unfinished jobs....



The gcc and g++ versions are  :

gcc --version

gcc
(GCC) 6.3.0
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty
; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


Please help me with this.

Bugsfunny

unread,
May 28, 2017, 3:09:59 PM5/28/17
to grpc.io
Plz help me with this..

Makarand Dharmapurikar

unread,
May 30, 2017, 5:56:58 PM5/30/17
to Bugsfunny, grpc.io
My guess is that you have an older copy of protobuf installed on the system somewhere. Can you manually search and remove older protobuf libraries?

--
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+unsubscribe@googlegroups.com.
To post to this group, send email to grp...@googlegroups.com.
Visit this group at https://groups.google.com/group/grpc-io.
To view this discussion on the web visit https://groups.google.com/d/msgid/grpc-io/fa8d0c31-da74-4ee4-9f92-7a991ef12853%40googlegroups.com.

For more options, visit https://groups.google.com/d/optout.

Bugsfunny

unread,
Jun 1, 2017, 7:37:09 AM6/1/17
to grpc.io, akshayj...@gmail.com
Thanks for replying..

I tried deleting all the files that are related to protobuf and grpc in all the bin and lib folders and tried installing it again.


1) When I install grpc first and then protobuf.. I'm able to install it without any errors... But i'm getting the below error while running the helloworld program in cpp exmaples.

Undefined symbols for architecture x86_64:


  "grpc::CreateChannel(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::shared_ptr<grpc::ChannelCredentials> const&)", referenced from:


      _main in greeter_client.o


  "google::protobuf::MessageFactory::InternalRegisterGeneratedFile(char const*, void (*)(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&))", referenced from:


      helloworld::protobuf_helloworld_2eproto::AddDescriptorsImpl()       in helloworld.pb.o


  "google::protobuf::io::CodedOutputStream::WriteStringWithSizeToArray(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned char*)", referenced from:


      google::protobuf::internal::WireFormatLite::WriteStringToArray(int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned char*) in helloworld.pb.o


  "google::protobuf::internal::ArenaStringPtr::AssignWithDefault(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const*, google::protobuf::internal::ArenaStringPtr)", referenced from:


      helloworld::HelloRequest::HelloRequest(helloworld::HelloRequest const&) in helloworld.pb.o


      helloworld::HelloRequest::HelloRequest(helloworld::HelloRequest const&) in helloworld.pb.o


      helloworld::HelloRequest::MergeFrom(helloworld::HelloRequest const&) in helloworld.pb.o


      helloworld::HelloReply::HelloReply(helloworld::HelloReply const&) in helloworld.pb.o


      helloworld::HelloReply::HelloReply(helloworld::HelloReply const&) in helloworld.pb.o


      helloworld::HelloReply::MergeFrom(helloworld::HelloReply const&) in helloworld.pb.o


  "google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, google::protobuf::io::CodedOutputStream*)", referenced from:


      helloworld::HelloRequest::SerializeWithCachedSizes(google::protobuf::io::CodedOutputStream*) const  in helloworld.pb.o


      helloworld::HelloReply::SerializeWithCachedSizes(google::protobuf::io::CodedOutputStream*) const  in helloworld.pb.o


  "google::protobuf::internal::WireFormatLite::ReadBytes(google::protobuf::io::CodedInputStream*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*)", referenced from:


      google::protobuf::internal::WireFormatLite::ReadString(google::protobuf::io::CodedInputStream*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*) in helloworld.pb.o


  "google::protobuf::internal::AssignDescriptors(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, google::protobuf::internal::MigrationSchema const*, google::protobuf::Message const* const*, unsigned int const*, google::protobuf::MessageFactory*, google::protobuf::Metadata*, google::protobuf::EnumDescriptor const**, google::protobuf::ServiceDescriptor const**)", referenced from:


      helloworld::protobuf_helloworld_2eproto::(anonymous namespace)::protobuf_AssignDescriptors() in helloworld.pb.o


  "google::protobuf::internal::fixed_address_empty_string[abi:cxx11]", referenced from:


      google::protobuf::internal::GetEmptyStringAlreadyInited[abi:cxx11]() in helloworld.pb.o


      google::protobuf::internal::GetEmptyStringAlreadyInited[abi:cxx11]() in greeter_client.o


  "google::protobuf::Message::GetTypeName[abi:cxx11]() const", referenced from:


      vtable for helloworld::HelloReply in helloworld.pb.o


      vtable for helloworld::HelloRequest in helloworld.pb.o


  "google::protobuf::Message::InitializationErrorString[abi:cxx11]() const", referenced from:


      vtable for helloworld::HelloReply in helloworld.pb.o


      vtable for helloworld::HelloRequest in helloworld.pb.o


ld: symbol(s) not found for architecture x86_64


collect2: error: ld returned 1 exit status


make: *** [greeter_client] Error 1

Enter code here...



2) When I install protobuf first and then grpc i'm getting the same error which i first posted in this thread (during executing make command in grpc directory ).








To unsubscribe from this group and stop receiving emails from it, send an email to grpc-io+u...@googlegroups.com.

To post to this group, send email to grp...@googlegroups.com.
Visit this group at https://groups.google.com/group/grpc-io.

chaudhar...@gmail.com

unread,
Nov 24, 2018, 12:28:38 AM11/24/18
to grpc.io
Did you found a reason for this error? I am stuck at the same point with the same error as yours.

Martin Scholz

unread,
Oct 15, 2020, 11:36:30 AM10/15/20
to grpc.io
I know this is an old thread, but I'm stucking with same at the moment. What i did. Build gRPC with CMake on Mac. No failures. Then linking libs to my project and when trying to build get the following

```
libgrpc.a(ssl_transport_security.cc.o):-1: Fehler: Undefined symbols for architecture x86_64:
  "_BIO_get_mem_data", referenced from:
      tsi_ssl_get_cert_chain_contents(stack_st_X509*, tsi_peer_property*) in libgrpc.a(ssl_transport_security.cc.o)
      add_pem_certificate(x509_st*, tsi_peer_property*) in libgrpc.a(ssl_transport_security.cc.o)
  "_BIO_get_mem_ptr", referenced from:
      aes_gcm_get_openssl_errors() in libgrpc.a(aes_gcm.cc.o)
  "_BIO_pending", referenced from:
      ssl_handshaker_process_bytes_from_peer(tsi_ssl_handshaker*, unsigned char const*, unsigned long*) in libgrpc.a(ssl_transport_security.cc.o)
      ssl_handshaker_get_bytes_to_send_to_peer(tsi_ssl_handshaker*, unsigned char*, unsigned long*) in libgrpc.a(ssl_transport_security.cc.o)
      ssl_protector_protect(tsi_frame_protector*, unsigned char const*, unsigned long*, unsigned char*, unsigned long*) in libgrpc.a(ssl_transport_security.cc.o)
      ssl_protector_protect_flush(tsi_frame_protector*, unsigned char*, unsigned long*, unsigned long*) in libgrpc.a(ssl_transport_security.cc.o)
  "_BIO_should_retry", referenced from:
      ssl_handshaker_get_bytes_to_send_to_peer(tsi_ssl_handshaker*, unsigned char*, unsigned long*) in libgrpc.a(ssl_transport_security.cc.o)
  "_EVP_DigestSignUpdate", referenced from:
      compute_and_encode_signature(grpc_auth_json_key const*, char const*, char const*) in libgrpc.a(json_token.cc.o)
  "_EVP_MD_CTX_create", referenced from:
      compute_and_encode_signature(grpc_auth_json_key const*, char const*, char const*) in libgrpc.a(json_token.cc.o)
  "_EVP_MD_CTX_destroy", referenced from:
      compute_and_encode_signature(grpc_auth_json_key const*, char const*, char const*) in libgrpc.a(json_token.cc.o)
  "_OPENSSL_free", referenced from:
      peer_property_from_x509_common_name(x509_st*, tsi_peer_property*) in libgrpc.a(ssl_transport_security.cc.o)
      add_subject_alt_names_properties_to_peer(tsi_peer*, stack_st_GENERAL_NAME*, unsigned long) in libgrpc.a(ssl_transport_security.cc.o)
  "_OpenSSL_add_all_algorithms", referenced from:
      init_openssl() in libgrpc.a(ssl_transport_security.cc.o)
  "_SSL_CTX_add_extra_chain_cert", referenced from:
      ssl_ctx_use_certificate_chain(ssl_ctx_st*, char const*, unsigned long) in libgrpc.a(ssl_transport_security.cc.o)
  "_SSL_CTX_get_ex_new_index", referenced from:
      init_openssl() in libgrpc.a(ssl_transport_security.cc.o)
  "_SSL_CTX_set_session_cache_mode", referenced from:
      tsi_create_ssl_client_handshaker_factory_with_options(tsi_ssl_client_handshaker_options const*, tsi_ssl_client_handshaker_factory**) in libgrpc.a(ssl_transport_security.cc.o)
  "_SSL_CTX_set_tlsext_servername_arg", referenced from:
      tsi_create_ssl_server_handshaker_factory_with_options(tsi_ssl_server_handshaker_options const*, tsi_ssl_server_handshaker_factory**) in libgrpc.a(ssl_transport_security.cc.o)
  "_SSL_CTX_set_tlsext_servername_callback", referenced from:
      tsi_create_ssl_server_handshaker_factory_with_options(tsi_ssl_server_handshaker_options const*, tsi_ssl_server_handshaker_factory**) in libgrpc.a(ssl_transport_security.cc.o)
  "_SSL_CTX_set_tlsext_ticket_keys", referenced from:
      tsi_create_ssl_server_handshaker_factory_with_options(tsi_ssl_server_handshaker_options const*, tsi_ssl_server_handshaker_factory**) in libgrpc.a(ssl_transport_security.cc.o)
  "_SSL_CTX_set_tmp_ecdh", referenced from:
      populate_ssl_context(ssl_ctx_st*, tsi_ssl_pem_key_cert_pair const*, char const*) in libgrpc.a(ssl_transport_security.cc.o)
  "_SSL_library_init", referenced from:
      init_openssl() in libgrpc.a(ssl_transport_security.cc.o)
  "_SSL_load_error_strings", referenced from:
      init_openssl() in libgrpc.a(ssl_transport_security.cc.o)
  "_SSL_set_tlsext_host_name", referenced from:
      create_tsi_ssl_handshaker(ssl_ctx_st*, int, char const*, tsi_ssl_handshaker_factory*, tsi_handshaker**) in libgrpc.a(ssl_transport_security.cc.o)
  "SharedLock::SharedLock(CReadWriteLock&, bool)", referenced from:
      UssGrpcClient::isChannelConnected(CAutoPtr<wchar_t>*, unsigned int*) in UssGrpcClient.o
  "SharedLock::~SharedLock()", referenced from:
      UssGrpcClient::isChannelConnected(CAutoPtr<wchar_t>*, unsigned int*) in UssGrpcClient.o
  "ExclusiveLock::ExclusiveLock(CReadWriteLock&, bool)", referenced from:
      UssGrpcClient::init(unsigned int*, bool) in UssGrpcClient.o
  "ExclusiveLock::~ExclusiveLock()", referenced from:
      UssGrpcClient::init(unsigned int*, bool) in UssGrpcClient.o
  "CReadWriteLock::CReadWriteLock(bool)", referenced from:
      UssGrpcClient::UssGrpcClient(wchar_t const*) in UssGrpcClient.o
      UssGrpcClient::UssGrpcClient(UssGrpcClient*) in UssGrpcClient.o
  "IGarbageCollectedObject::IGarbageCollectedObject()", referenced from:
      UssClient::UssClient() in UssGrpcClient.o
  "UssClient::~UssClient()", referenced from:
      UssGrpcClient::UssGrpcClient(wchar_t const*) in UssGrpcClient.o
      UssGrpcClient::UssGrpcClient(UssGrpcClient*) in UssGrpcClient.o
      UssGrpcClient::~UssGrpcClient() in UssGrpcClient.o
  "typeinfo for UssClient", referenced from:
      typeinfo for UssGrpcClient in UssGrpcClient.o
  "vtable for UssClient", referenced from:
      UssClient::UssClient() in UssGrpcClient.o
  NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
  "_sk_new_null", referenced from:
      _sk_X509_NAME_new_null in libgrpc.a(ssl_transport_security.cc.o)
     (maybe you meant: _OPENSSL_sk_new_null)
  "_sk_num", referenced from:
      _sk_X509_num in libgrpc.a(ssl_transport_security.cc.o)
      _sk_GENERAL_NAME_num in libgrpc.a(ssl_transport_security.cc.o)
     (maybe you meant: _OPENSSL_sk_num)
  "_sk_pop_free_ex", referenced from:
      _sk_GENERAL_NAME_pop_free in libgrpc.a(ssl_transport_security.cc.o)
      _sk_X509_NAME_pop_free in libgrpc.a(ssl_transport_security.cc.o)
  "_sk_push", referenced from:
      _sk_X509_NAME_push in libgrpc.a(ssl_transport_security.cc.o)
     (maybe you meant: _OPENSSL_sk_push)
  "_sk_value", referenced from:
      _sk_X509_value in libgrpc.a(ssl_transport_security.cc.o)
      _sk_GENERAL_NAME_value in libgrpc.a(ssl_transport_security.cc.o)
     (maybe you meant: _OPENSSL_sk_value)

```
The same project with libs build on windows with CMake is working there. So it seems to be a problem with clang on Mac. Is there any solution for this. It seems there are many old threads on github, but none with a solution.

Thx.

Martin Scholz

unread,
Oct 16, 2020, 5:04:02 AM10/16/20
to grpc.io
Sorry, got it. Forgot to build gRPC with OpenSSL like i do on windows.

Justin Pojol Chang

unread,
Apr 23, 2021, 11:14:55 AM4/23/21
to grpc.io
martin, I am still getting your exact same issue when trying to build a separate project with grpc on mac. What did you mean build gRPC with OpenSSL and how do I do that?

Seyed Mahdi Mousavi

unread,
Oct 13, 2021, 12:26:32 PM10/13/21
to grpc.io
I faced same issue just like you. I noticed that error reference is Channel. So I tried to add grpc++_unsecure and grpc_unsecure and problems gone.

Seyed Mahdi Mousavi

unread,
Oct 13, 2021, 12:27:37 PM10/13/21
to grpc.io
I mean grpc++_unsecure and grpc_unsecure libraries from grpc
Reply all
Reply to author
Forward
0 new messages