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?

On Friday, October 16, 2020 at 5:04:02 AM UTC-4 [email protected] 
wrote:

> Sorry, got it. Forgot to build gRPC with OpenSSL like i do on windows.
>
> Martin Scholz schrieb am Donnerstag, 15. Oktober 2020 um 17:36:30 UTC+2:
>
>> 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.
>> [email protected] schrieb am Samstag, 24. November 2018 um 06:28:38 
>> UTC+1:
>>
>>> Did you found a reason for this error? I am stuck at the same point with 
>>> the same error as yours.
>>>
>>>
>>> On Thursday, 1 June 2017 04:37:09 UTC-7, Bugsfunny wrote:
>>>>
>>>> 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 ).
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> On Wednesday, May 31, 2017 at 3:26:58 AM UTC+5:30, Makarand 
>>>> Dharmapurikar wrote:
>>>>>
>>>>> 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?
>>>>>
>>>>> On Sun, May 28, 2017 at 12:09 PM, Bugsfunny <[email protected]> 
>>>>> wrote:
>>>>>
>>>>>> Plz help me with this..
>>>>>> On Wednesday, May 24, 2017 at 12:44:25 PM UTC+5:30, Bugsfunny wrote:
>>>>>>>
>>>>>>> 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.
>>>>>>>
>>>>>>> -- 
>>>>>> 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 [email protected].
>>>>>> To post to this group, send email to [email protected].
>>>>>> 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
>>>>>>  
>>>>>> <https://groups.google.com/d/msgid/grpc-io/fa8d0c31-da74-4ee4-9f92-7a991ef12853%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>> .
>>>>>>
>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>
>>>>>
>>>>>

-- 
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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/grpc-io/ef911cf4-d05c-4d59-9f90-f493983402f4n%40googlegroups.com.

Reply via email to