{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.
*<2> And in "mapped_region.hpp":
/some-path/thirdparty/boost/boost_1_55_0_Android/boost/interprocess/mapped_region.hpp:49:
error: sys/shm.h: No such file or directory
# include
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".
participants (2)
-
Gavin Lambert
-
ustulation