[zeromq-dev] (no subject)
Victor Perron
victor at iso3103.net
Wed Jul 18 09:55:42 CEST 2012
OK.
The libstdc++ shared object from the NDK defines very few symbols, around
twenty, mostly for what google claims to support: exceptions and such.
In order to use the STL, one must use their "stlport" beta library which I
believe is included since NDKr5.
The shared object is present on my SGSIII, but I think that maybe it's
better to statically include the needed symbols in libzmq to prevent future
issues (and as long as it's in beta and that older devices mat use it)
The other way to go would be to remove all those STL calls from libzmq (as
2.2 was doing) but... ;)
Thing is, I'm afraid that those functions you reported not found are not
even in Android's stlport. And I'm not happy yo use another, third-party C
library.
I'll update the wiki about this issue, and I think you should stick to
zeromq2.2 before that; that one has been properly tested as working on
Android.
Regards,
On Wed, Jul 18, 2012 at 1:31 AM, Eric <n1555 at yahoo.fr> wrote:
> Thanks,
>
> I replaced assign by clear/append. But it still not works...something make
> me feel that I don't have any STD lib available :
> making a call to arm-linux-androideabi-ld libjzmq.so give me this :
>
> /home/xxx/libjzmq.so: undefined reference to `std::basic_ios<char,
> std::char_traits<char> >::init(std::basic_streambuf<char,
> std::char_traits<char> >*)'
> /home/xxx/libjzmq.so: undefined reference to
> `__gnu_cxx::__exchange_and_add(int volatile*, int)'
> /home/xxx/libjzmq.so: undefined reference to
> `std::_Rb_tree_decrement(std::_Rb_tree_node_base*)'
> /home/xxx/libjzmq.so: undefined reference to `std::basic_string<char,
> std::char_traits<char>, std::allocator<char> >::basic_string(std::string
> const&)'
> /home/xxx/libjzmq.so: undefined reference to `std::string::compare(char
> const*) const'
> /home/xxx/libjzmq.so: undefined reference to `std::locale::locale()'
> /home/xxx/libjzmq.so: undefined reference to `__aeabi_uldivmod'
> /home/xxx/libjzmq.so: undefined reference to `std::string::find(char
> const*, unsigned int, unsigned int) const'
> /home/xxx/libjzmq.so: undefined reference to `std::string::append(char
> const*)'
> /home/xxx/libjzmq.so: undefined reference to `std::__throw_bad_alloc()'
> /home/xxx/libjzmq.so: undefined reference to
> `std::string::assign(std::string const&)'
> /home/xxx/libjzmq.so: undefined reference to `vtable for
> std::basic_stringstream<char, std::char_traits<char>, std::allocator<char>
> >'
> /home/xxx/libjzmq.so: undefined reference to `std::basic_string<char,
> std::char_traits<char>, std::allocator<char> >::~basic_string()'
> /home/xxx/libjzmq.so: undefined reference to
> `std::basic_stringstream<char, std::char_traits<char>, std::allocator<char>
> >::~basic_stringstream()'
> /home/xxx/libjzmq.so: undefined reference to
> `std::__throw_length_error(char const*)'
> /home/xxx/libjzmq.so: undefined reference to
> `std::_Rb_tree_increment(std::_Rb_tree_node_base const*)'
> /home/xxx/libjzmq.so: undefined reference to `VTT for
> std::basic_stringstream<char, std::char_traits<char>, std::allocator<char>
> >'
> /home/xxx/libjzmq.so: undefined reference to `__gnu_cxx::__atomic_add(int
> volatile*, int)'
> /home/xxx/libjzmq.so: undefined reference to
> `std::string::_Rep::_S_empty_rep_storage'
> /home/xxx/libjzmq.so: undefined reference to `std::ostream&
> std::ostream::_M_insert<unsigned long>(unsigned long)'
> /home/xxx/libjzmq.so: undefined reference to
> `std::ostream::operator<<(int)'
> /home/xxx/libjzmq.so: undefined reference to `std::ios_base::ios_base()'
> /home/xxx/libjzmq.so: undefined reference to `std::string::_M_leak()'
> /home/xxx/libjzmq.so: undefined reference to `std::basic_ostream<char,
> std::char_traits<char> >& std::__ostream_insert<char,
> std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char>
> >&, char const*, int)'
> /home/xxx/libjzmq.so: undefined reference to
> `std::string::_M_mutate(unsigned int, unsigned int, unsigned int)'
> /home/xxx/libjzmq.so: undefined reference to `std::locale::~locale()'
> /home/xxx/libjzmq.so: undefined reference to `std::string::clear()'
> /home/xxx/libjzmq.so: undefined reference to
> `std::__throw_logic_error(char const*)'
> /home/xxx/libjzmq.so: undefined reference to
> `std::_Rb_tree_insert_and_rebalance(bool, std::_Rb_tree_node_base*,
> std::_Rb_tree_node_base*, std::_Rb_tree_node_base&)'
> /home/xxx/libjzmq.so: undefined reference to `std::basic_string<char,
> std::char_traits<char>, std::allocator<char> >::basic_string(char const*,
> std::allocator<char> const&)'
> /home/xxx/libjzmq.so: undefined reference to
> `std::_Rb_tree_rebalance_for_erase(std::_Rb_tree_node_base*,
> std::_Rb_tree_node_base&)'
> /home/xxx/libjzmq.so: undefined reference to `std::string::_M_leak_hard()'
> /home/xxx/libjzmq.so: undefined reference to `vtable for
> __cxxabiv1::__vmi_class_type_info'
> /home/xxx/libjzmq.so: undefined reference to `std::basic_string<char,
> std::char_traits<char>, std::allocator<char> >::basic_string(std::string
> const&, unsigned int, unsigned int)'
> /home/xxx/libjzmq.so: undefined reference to `vtable for
> std::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >'
> /home/xxx/libjzmq.so: undefined reference to `vtable for
> std::basic_streambuf<char, std::char_traits<char> >'
> /home/xxx/libjzmq.so: undefined reference to `std::basic_string<char,
> std::char_traits<char>, std::allocator<char> >::basic_string(char const*,
> unsigned int, std::allocator<char> const&)'
> /home/xxx/libjzmq.so: undefined reference to `std::ios_base::~ios_base()'
> /home/xxx/libjzmq.so: undefined reference to `__aeabi_uidivmod'
> /home/xxx/libjzmq.so: undefined reference to `vtable for
> std::basic_ios<char, std::char_traits<char> >'
> /home/xxx/libjzmq.so: undefined reference to `std::basic_istream<char,
> std::char_traits<char> >::~basic_istream()'
> /home/xxx/libjzmq.so: undefined reference to
> `std::_Rb_tree_increment(std::_Rb_tree_node_base*)'
> /home/xxx/libjzmq.so: undefined reference to `operator delete(void*,
> std::nothrow_t const&)'
> /home/xxx/libjzmq.so: undefined reference to
> `std::string::_Rep::_S_create(unsigned int, unsigned int,
> std::allocator<char> const&)'
> /home/xxx/libjzmq.so: undefined reference to
> `std::__throw_out_of_range(char const*)'
> /home/xxx/libjzmq.so: undefined reference to `operator new(unsigned int,
> std::nothrow_t const&)'
> /home/xxx/libjzmq.so: undefined reference to
> `std::string::_Rep::_M_destroy(std::allocator<char> const&)'
> /home/xxx/libjzmq.so: undefined reference to `std::string::append(char
> const*, unsigned int)'
>
> I'll have a look to what is going on with my configuration.
>
> Best regards.
>
> Eric
>
>
> --- En date de : *Mer 18.7.12, Ron Elliott <ronaldbelliott at gmail.com>* a
> écrit :
>
>
> De: Ron Elliott <ronaldbelliott at gmail.com>
> Objet: Re: [zeromq-dev] (no subject)
> À: "ZeroMQ development list" <zeromq-dev at lists.zeromq.org>,
> victor at iso3103.net
> Date: Mercredi 18 juillet 2012, 0h53
>
>
> perhaps this is an option: http://www.crystax.net/en/android/ndk/7
> On Jul 17, 2012 3:48 PM, "Victor Perron" <victor at iso3103.net<http://mc/compose?to=victor@iso3103.net>>
> wrote:
>
> Same answer as before. I paste it down there.
>
> *Hi,
>
> In that case it seems that you discovered something serious.
> I took a look at it, and indeed the assign() symbol from std::string class
> seems undefined.
> That would mean, Android does _not_ define such a function in its SDK.
>
> Now, the proper way to get around this is a patch to Zeromq 3.x.* *
> You'll have to fix those lines (my guess):
>
> ./src/ipc_listener.cpp:151: filename.assign(addr_);
> ./src/socket_base.cpp:331: *
> * options.last_endpoint.assign (addr_);
> ./src/socket_base.cpp:480: ** options.last_endpoint.assign (addr_);
> ./src/tcp_address.cpp:503: ** addr_str.assign (name_, delimiter -
> name_);
> ./src/tcp_address.cpp:504: ** mask_str.assign (delimiter + 1);
> ./src/tcp_address.cpp:511: ** addr_str.assign (name_);
>
> ... and try to compile again. If there are no other undefined symbols,
> that should work.
> That issue did not exist in ZeroMQ 2.2 though, that one didn't make an
> extensive use of std::string.
>
> Keep me updated, we'll see for a pull request when I'll be less busy ;)* *
>
> Best regards,*
> *
>
> *I'll take a look for an acceptable patch tomorrow, if nobody shows up
> with a better suspect/solution of course !
> On Wed, Jul 18, 2012 at 12:35 AM, Eric <n1555 at yahoo.fr<http://mc/compose?to=n1555@yahoo.fr>
> > wrote:
>
> Trying to use jzmq under android.
> I generated using zmq3.x procedure, having to change config.sub and
> config.guess files but generation is OK and match the scheme on
> http://www.zeromq.org/build:android.
>
> But I always get unsatisfiedlink error when loading library libjzmq
> (loadlibrary(jzmq)), whereas i'm able to load libzmq without any problem.
> I've seen other people asking the same question without answer. Searching
> for hours over the net, no idea, any help would be appreciated!
>
> Best regards.
> Eric
>
> _______________________________________________
> zeromq-dev mailing list
> zeromq-dev at lists.zeromq.org<http://mc/compose?to=zeromq-dev@lists.zeromq.org>
> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>
>
>
>
> --
> Victor
>
>
> _______________________________________________
> zeromq-dev mailing list
> zeromq-dev at lists.zeromq.org<http://mc/compose?to=zeromq-dev@lists.zeromq.org>
> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>
>
> -----La pièce jointe associée suit-----
>
>
> _______________________________________________
> zeromq-dev mailing list
> zeromq-dev at lists.zeromq.org<http://mc/compose?to=zeromq-dev@lists.zeromq.org>
> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>
>
--
Victor
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.zeromq.org/pipermail/zeromq-dev/attachments/20120718/b271ab87/attachment.htm>
More information about the zeromq-dev
mailing list