On 16/11/2014 19:00, ustulation wrote:
{Ubuntu 14.04 64 bits, arm-g++ compiler 4.9 one that comes with google's ndk r10c) (The compiler has --sysroot pointing to platform android-14, and -march=armv7-a)
on using arm cross-compiler for compiling boost I get the following error in "*socket_ops.ipp*":
*<1> for all function (templates) of this type:* template <typename SockLenType> inline int call_getsockname(SockLenType msghdr::*, socket_type s, socket_addr_type* addr, std::size_t* addrlen) { SockLenType tmp_addrlen = (SockLenType)*addrlen; int result = ::getsockname(s, addr, &tmp_addrlen); *addrlen = (std::size_t)tmp_addrlen; return result; }
/some-path/thirdparty/boost/boost_1_55_0_Android/boost/asio/detail/impl/socket_ops.ipp:1639: error: invalid conversion from 'int*' to 'socklen_t* {aka unsigned int*}' [-fpermissive] int result = ::getsockname(s, addr, &tmp_addrlen); ^
On changing the line to: int result = ::getsockname(s, addr, (socklen_t*)tmp_addrlen);
it compiles fine ofcourse but i don't know if this is what is to be done.
That's not the correct fix. You should leave that line as-is but instead find where the tmp_addrlen variable is declared and change it from "int" to "socklen_t".