problem with the boost while compiling inside android-ndk-r2-crytax

358 views
Skip to first unread message

nasif-android

unread,
Dec 13, 2010, 9:56:12 AM12/13/10
to android-ndk
I downloaded boost library and build by using android-crystax-ndk-r4
by using this link that i found in android-ndk
http://groups.google.com/group/boost-list/browse_thread/thread/ce2144a2ee9e47f9/f75844dc37f8fd4c
forum.

Later try to include boost library(thread,regex,system) inside my
application with the corresponding header included
This is my Application.mk file
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
PP_PROJECT_PATH := /home/nasif/workspace/TestCPPBoostDemo
APP_BUILD_SCRIPT := /home/nasif/workspace/TestCPPBoostDemo/jni/
Android.mk
APP_ABI := armeabi
APP_MODULES :=testboost
APP_OPTIM := release
APP_CFLAGS += -O3 -nostdlib
APP_CPPFLAGS +=--sysroot=/home/nasif/android-ndk-r2-crystax/build/
platforms/android-3/arch-arm -DBOOST_THREAD_LINUX -
DBOOST_HAS_PTHREADS -lpthread -D__arm__ -D_REENTRANT \
-DBOOST_HAS_GETTIMEOFDAY -DBOOST_HAS_THREADS -DANDROID -
D_GLIBCXX__PTHREADS -D__NEW__ -D__SGI_STL_INTERNAL_PAIR_H -fno-short-
enums \
-I/home/****/android-ndk-r2-crystax/build/platforms/android-3/arch-arm/
usr/include
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Below is my Android.mk files

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
LOCAL_PATH := $(call my-dir)
STATICLIBPATH:=/home/****/workspace/TestCPPBoostDemo/obj/local
include $(CLEAR_VARS)
LOCAL_MODULE := testboost
#below is my jni wrapper in cpp
LOCAL_SRC_FILES := ClientConnecter.cpp RManager.cpp RWrapper.cpp
SManager.cpp SWrapper.cpp
LOCAL_C_INCLUDES += $(LOCAL_PATH)/include $(LOCAL_PATH)/include/boost $
(LOCAL_PATH)/include/libavcodec $(LOCAL_PATH)/include/libavdevice $
(LOCAL_PATH)/include/libavfilter $(LOCAL_PATH)/include/libavformat $
(LOCAL_PATH)/include/libavutil $(LOCAL_PATH)/include/libpostproc $
(LOCAL_PATH)/include/libswscale
LOCAL_CFLAGS := -g
LOCAL_STATIC_LIBRARIES := libavformat libavcodec libavutil libpostproc
libswscale libavdevice libavfilter libboost_system libboost_thread
libboost_regex
LOCAL_LDLIBS+= -L $(STATICLIBPATH)-lffmpeg -llog -lpthread
include $(BUILD_SHARED_LIBRARY)
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
when i am building by using make APP=boostcpp where boostcpp is name
of my app

i am getting the following
erreor.................................................................................................................




/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/home/nasif/workspace/TestCPPBoostDemo/jni/include/boost/asio/detail/
socket_types.hpp:124: error: 'INET_ADDRSTRLEN' was not declared in
this scope
In file included from /home/nasif/workspace/TestCPPBoostDemo/jni/
include/boost/asio/ip/address_v4.hpp:209,
from /home/nasif/workspace/TestCPPBoostDemo/jni/
include/boost/asio/ip/address.hpp:21,
from /home/nasif/workspace/TestCPPBoostDemo/jni/
include/boost/asio.hpp:46,
from /home/nasif/workspace/TestCPPBoostDemo/jni/
include/ClientASIO.h:5,
from /home/nasif/workspace/TestCPPBoostDemo/jni/
include/ClientConnecter.h:2,
from /home/nasif/workspace/TestCPPBoostDemo/jni/
ClientConnecter.cpp:1:
/home/nasif/workspace/TestCPPBoostDemo/jni/include/boost/asio/ip/impl/
address_v4.ipp: In member function 'std::string
boost::asio::ip::address_v4::to_string(boost::system::error_code&)
const':
/home/nasif/workspace/TestCPPBoostDemo/jni/include/boost/asio/ip/impl/
address_v4.ipp:84: error: size of array 'addr_str' is not an integral
constant-expression
In file included from /home/nasif/workspace/TestCPPBoostDemo/jni/
include/boost/asio/ip/address_v6.hpp:227,
from /home/nasif/workspace/TestCPPBoostDemo/jni/
include/boost/asio/ip/address.hpp:22,
from /home/nasif/workspace/TestCPPBoostDemo/jni/
include/boost/asio.hpp:46,
from /home/nasif/workspace/TestCPPBoostDemo/jni/
include/ClientASIO.h:5,
from /home/nasif/workspace/TestCPPBoostDemo/jni/
include/ClientConnecter.h:2,
from /home/nasif/workspace/TestCPPBoostDemo/jni/
ClientConnecter.cpp:1:
/home/nasif/workspace/TestCPPBoostDemo/jni/include/boost/asio/ip/impl/
address_v6.ipp: In constructor
'boost::asio::ip::address_v6::address_v6()':
/home/nasif/workspace/TestCPPBoostDemo/jni/include/boost/asio/ip/impl/
address_v6.ipp:37: error: 'IN6ADDR_ANY_INIT' was not declared in this
scope
/home/nasif/workspace/TestCPPBoostDemo/jni/include/boost/asio/ip/impl/
address_v6.ipp: In member function 'bool
boost::asio::ip::address_v6::is_multicast_global() const':
/home/nasif/workspace/TestCPPBoostDemo/jni/include/boost/asio/ip/impl/
address_v6.ipp:209: error: 'IN6_IS_ADDR_MC_GLOBAL' was not declared in
this scope
/home/nasif/workspace/TestCPPBoostDemo/jni/include/boost/asio/ip/impl/
address_v6.ipp: In member function 'bool
boost::asio::ip::address_v6::is_multicast_node_local() const':
/home/nasif/workspace/TestCPPBoostDemo/jni/include/boost/asio/ip/impl/
address_v6.ipp:221: error: 'IN6_IS_ADDR_MC_NODELOCAL' was not declared
in this scope
In file included from /home/nasif/workspace/TestCPPBoostDemo/jni/
include/boost/asio/ip/detail/endpoint.hpp:139,
from /home/nasif/workspace/TestCPPBoostDemo/jni/
include/boost/asio/ip/basic_endpoint.hpp:20,
from /home/nasif/workspace/TestCPPBoostDemo/jni/
include/boost/asio.hpp:49,
from /home/nasif/workspace/TestCPPBoostDemo/jni/
include/ClientASIO.h:5,
from /home/nasif/workspace/TestCPPBoostDemo/jni/
include/ClientConnecter.h:2,
from /home/nasif/workspace/TestCPPBoostDemo/jni/
ClientConnecter.cpp:1:
/home/nasif/workspace/TestCPPBoostDemo/jni/include/boost/asio/ip/
detail/impl/endpoint.ipp: In constructor
'boost::asio::ip::detail::endpoint::endpoint(int, short unsigned
int)':
/home/nasif/workspace/TestCPPBoostDemo/jni/include/boost/asio/ip/
detail/impl/endpoint.ipp:60: error: 'IN6ADDR_ANY_INIT' was not
declared in this scope
In file included from /home/nasif/workspace/TestCPPBoostDemo/jni/
include/boost/asio/ip/multicast.hpp:20,
from /home/nasif/workspace/TestCPPBoostDemo/jni/
include/boost/asio.hpp:56,
from /home/nasif/workspace/TestCPPBoostDemo/jni/
include/ClientASIO.h:5,
from /home/nasif/workspace/TestCPPBoostDemo/jni/
include/ClientConnecter.h:2,
from /home/nasif/workspace/TestCPPBoostDemo/jni/
ClientConnecter.cpp:1:
/home/nasif/workspace/TestCPPBoostDemo/jni/include/boost/asio/ip/
detail/socket_option.hpp: In constructor
'boost::asio::ip::detail::socket_option::multicast_request<IPv4_Level,
IPv4_Name, IPv6_Level, IPv6_Name>::multicast_request()':
/home/nasif/workspace/TestCPPBoostDemo/jni/include/boost/asio/ip/
detail/socket_option.hpp:396: error: 'IN6ADDR_ANY_INIT' was not
declared in this scope
/home/nasif/workspace/TestCPPBoostDemo/jni/include/boost/asio/ip/
detail/socket_option.hpp:398: error: 'struct
boost::asio::detail::in6_mreq_type' has no member named
'ipv6mr_interface'
/home/nasif/workspace/TestCPPBoostDemo/jni/include/boost/asio/ip/
detail/socket_option.hpp: In constructor
'boost::asio::ip::detail::socket_option::multicast_request<IPv4_Level,
IPv4_Name, IPv6_Level, IPv6_Name>::multicast_request(const
boost::asio::ip::address&)':
/home/nasif/workspace/TestCPPBoostDemo/jni/include/boost/asio/ip/
detail/socket_option.hpp:417: error: 'struct
boost::asio::detail::in6_mreq_type' has no member named
'ipv6mr_interface'
/home/nasif/workspace/TestCPPBoostDemo/jni/include/boost/asio/ip/
detail/socket_option.hpp:428: error: 'IN6ADDR_ANY_INIT' was not
declared in this scope
/home/nasif/workspace/TestCPPBoostDemo/jni/include/boost/asio/ip/
detail/socket_option.hpp:430: error: 'struct
boost::asio::detail::in6_mreq_type' has no member named
'ipv6mr_interface'
/home/nasif/workspace/TestCPPBoostDemo/jni/include/boost/asio/ip/
detail/socket_option.hpp: In constructor
'boost::asio::ip::detail::socket_option::multicast_request<IPv4_Level,
IPv4_Name, IPv6_Level, IPv6_Name>::multicast_request(const
boost::asio::ip::address_v4&, const boost::asio::ip::address_v4&)':
/home/nasif/workspace/TestCPPBoostDemo/jni/include/boost/asio/ip/
detail/socket_option.hpp:447: error: 'IN6ADDR_ANY_INIT' was not
declared in this scope
/home/nasif/workspace/TestCPPBoostDemo/jni/include/boost/asio/ip/
detail/socket_option.hpp:449: error: 'struct
boost::asio::detail::in6_mreq_type' has no member named
'ipv6mr_interface'
/home/nasif/workspace/TestCPPBoostDemo/jni/include/boost/asio/ip/
detail/socket_option.hpp: In constructor
'boost::asio::ip::detail::socket_option::multicast_request<IPv4_Level,
IPv4_Name, IPv6_Level, IPv6_Name>::multicast_request(const
boost::asio::ip::address_v6&, long unsigned int)':
/home/nasif/workspace/TestCPPBoostDemo/jni/include/boost/asio/ip/
detail/socket_option.hpp:468: error: 'struct
boost::asio::detail::in6_mreq_type' has no member named
'ipv6mr_interface'
In file included from /home/nasif/workspace/TestCPPBoostDemo/jni/
include/boost/asio.hpp:56,
from /home/nasif/workspace/TestCPPBoostDemo/jni/
include/ClientASIO.h:5,
from /home/nasif/workspace/TestCPPBoostDemo/jni/
include/ClientConnecter.h:2,
from /home/nasif/workspace/TestCPPBoostDemo/jni/
ClientConnecter.cpp:1:
/home/nasif/workspace/TestCPPBoostDemo/jni/include/boost/asio/ip/
multicast.hpp: At global scope:
/home/nasif/workspace/TestCPPBoostDemo/jni/include/boost/asio/ip/
multicast.hpp:51: error: 'IPV6_JOIN_GROUP' was not declared in this
scope
/home/nasif/workspace/TestCPPBoostDemo/jni/include/boost/asio/ip/
multicast.hpp:51: error: template argument 4 is invalid
/home/nasif/workspace/TestCPPBoostDemo/jni/include/boost/asio/ip/
multicast.hpp:51: error: invalid type in declaration before ';' token
/home/nasif/workspace/TestCPPBoostDemo/jni/include/boost/asio/ip/
multicast.hpp:76: error: 'IPV6_LEAVE_GROUP' was not declared in this
scope
/home/nasif/workspace/TestCPPBoostDemo/jni/include/boost/asio/ip/
multicast.hpp:76: error: template argument 4 is invalid
/home/nasif/workspace/TestCPPBoostDemo/jni/include/boost/asio/ip/
multicast.hpp:76: error: invalid type in declaration before ';' token
make: *** [out/apps/boostcpp//objs/testboost/ClientConnecter.o] Error
1


///////////////////////////////////////////////////////
All of this error is mainly due to in.h headerfiles inside netinet
due to it's mismatch with normal linux include...

How i will fix this, i am beliving some one of you will face the same
issue..................
i already spent three days to fix this things, later i tried with
android-ndk-r4b-crystax, but the errors are same....

Please help me...........................

Igor R

unread,
Dec 13, 2010, 10:05:56 AM12/13/10
to andro...@googlegroups.com
> /home/nasif/workspace/TestCPPBoostDemo/jni/include/boost/asio/detail/
> socket_types.hpp:124: error: 'INET_ADDRSTRLEN' was not declared in this scope
<...>

> address_v6.ipp:37: error: 'IN6ADDR_ANY_INIT' was not declared in this scope
<...>

> address_v6.ipp:209: error: 'IN6_IS_ADDR_MC_GLOBAL' was not declared in this scope
<...>

> address_v6.ipp:221: error: 'IN6_IS_ADDR_MC_NODELOCAL' was not declared in this scope
<...>

> detail/impl/endpoint.ipp:60: error: 'IN6ADDR_ANY_INIT' was not declared in this scope
>  All of this error is mainly due to in.h headerfiles inside netinet
> due to it's mismatch with normal linux include...
>
> How i will fix this, i am beliving some one of you will face the same
> issue..................
> i already spent three days to fix this things, later i tried with
> android-ndk-r4b-crystax, but the errors are same....

I also encountered this problem, and just defined the above macros manually.

alan

unread,
Dec 13, 2010, 10:49:44 AM12/13/10
to android-ndk
These #defines are still missing in ndk r5 too

Ryan Drake

unread,
Dec 14, 2010, 2:38:31 PM12/14/10
to andro...@googlegroups.com
Hi, I ran into a similar problem, and put together a patch [attached] that adds a few #defines to the headers. I found this necessary to compile the asio stuff in boost. This patch was made against the r4 crystax release, but it can probably work with the stock android NDK. Let me know if this helps.

Ryan


On Dec 13, 6:56 am, nasif-android <nas...@gmail.com> wrote:
> I downloaded boost library and build by using android-crystax-ndk-r4
> by using this link that i found in android-ndkhttp://groups.google.com/group/boost-list/browse_thread/thread/ce2144...
> /home/nasif/workspace/TestCPPBoostDemo/jni/include/boost/asio/detail/
> socket_types.hpp:124: error: 'INET_ADDRSTRLEN' was not declared in
> this scope
> address_v6.ipp:37: error: 'IN6ADDR_ANY_INIT' was not declared in this
> scope
> /home/nasif/workspace/TestCPPBoostDemo/jni/include/boost/asio/ip/impl/
> address_v6.ipp: In member function 'bool
> boost::asio::ip::address_v6::is_multicast_global() const':
> /home/nasif/workspace/TestCPPBoostDemo/jni/include/boost/asio/ip/impl/
> address_v6.ipp:209: error: 'IN6_IS_ADDR_MC_GLOBAL' was not declared in
> this scope
> /home/nasif/workspace/TestCPPBoostDemo/jni/include/boost/asio/ip/impl/
> address_v6.ipp: In member function 'bool
> boost::asio::ip::address_v6::is_multicast_node_local() const':
> /home/nasif/workspace/TestCPPBoostDemo/jni/include/boost/asio/ip/impl/
> address_v6.ipp:221: error: 'IN6_IS_ADDR_MC_NODELOCAL' was not declared
> in this scope
> In file included from /home/nasif/workspace/TestCPPBoostDemo/jni/
> include/boost/asio/ip/detail/endpoint.hpp:139,
>                  from /home/nasif/workspace/TestCPPBoostDemo/jni/
> include/boost/asio/ip/basic_endpoint.hpp:20,
>                  from /home/nasif/workspace/TestCPPBoostDemo/jni/
> include/boost/asio.hpp:49,
>                  from /home/nasif/workspace/TestCPPBoostDemo/jni/
> include/ClientASIO.h:5,
>                  from /home/nasif/workspace/TestCPPBoostDemo/jni/
> include/ClientConnecter.h:2,
>                  from /home/nasif/workspace/TestCPPBoostDemo/jni/
> ClientConnecter.cpp:1:
> /home/nasif/workspace/TestCPPBoostDemo/jni/include/boost/asio/ip/
> detail/impl/endpoint.ipp: In constructor
> 'boost::asio::ip::detail::endpoint::endpoint(int, short unsigned
> int)':
> /home/nasif/workspace/TestCPPBoostDemo/jni/include/boost/asio/ip/
> detail/impl/endpoint.ipp:60: error: 'IN6ADDR_ANY_INIT' was not
> declared in this scope
> In file included from /home/nasif/workspace/TestCPPBoostDemo/jni/
> include/boost/asio/ip/multicast.hpp:20,
>                  from /home/nasif/workspace/TestCPPBoostDemo/jni/
> include/boost/asio.hpp:56,
>                  from /home/nasif/workspace/TestCPPBoostDemo/jni/
> include/ClientASIO.h:5,
>                  from /home/nasif/workspace/TestCPPBoostDemo/jni/
> include/ClientConnecter.h:2,
>                  from /home/nasif/workspace/TestCPPBoostDemo/jni/
> ClientConnecter.cpp:1:
> /home/nasif/workspace/TestCPPBoostDemo/jni/include/boost/asio/ip/
> detail/socket_option.hpp: In constructor
> 'boost::asio::ip::detail::socket_option::multicast_request<IPv4_Level,
> IPv4_Name, IPv6_Level, IPv6_Name>::multicast_request()':
> /home/nasif/workspace/TestCPPBoostDemo/jni/include/boost/asio/ip/
> detail/socket_option.hpp:396: error: 'IN6ADDR_ANY_INIT' was not
> declared in this scope
> /home/nasif/workspace/TestCPPBoostDemo/jni/include/boost/asio/ip/
> detail/socket_option.hpp:398: error: 'struct
> boost::asio::detail::in6_mreq_type' has no member named
> 'ipv6mr_interface'
> /home/nasif/workspace/TestCPPBoostDemo/jni/include/boost/asio/ip/
> detail/socket_option.hpp: In constructor
> 'boost::asio::ip::detail::socket_option::multicast_request<IPv4_Level,
> IPv4_Name, IPv6_Level, IPv6_Name>::multicast_request(const
> boost::asio::ip::address&)':
> /home/nasif/workspace/TestCPPBoostDemo/jni/include/boost/asio/ip/
> detail/socket_option.hpp:417: error: 'struct
> boost::asio::detail::in6_mreq_type' has no member named
> 'ipv6mr_interface'
> /home/nasif/workspace/TestCPPBoostDemo/jni/include/boost/asio/ip/
> detail/socket_option.hpp:428: error: 'IN6ADDR_ANY_INIT' was not
> declared in this scope
> /home/nasif/workspace/TestCPPBoostDemo/jni/include/boost/asio/ip/
> detail/socket_option.hpp:430: error: 'struct
> boost::asio::detail::in6_mreq_type' has no member named
> 'ipv6mr_interface'
> /home/nasif/workspace/TestCPPBoostDemo/jni/include/boost/asio/ip/
> detail/socket_option.hpp: In constructor
> 'boost::asio::ip::detail::socket_option::multicast_request<IPv4_Level,
> IPv4_Name, IPv6_Level, IPv6_Name>::multicast_request(const
> boost::asio::ip::address_v4&, const boost::asio::ip::address_v4&)':
> /home/nasif/workspace/TestCPPBoostDemo/jni/include/boost/asio/ip/
> detail/socket_option.hpp:447: error: 'IN6ADDR_ANY_INIT' was not
> declared in this scope
> /home/nasif/workspace/TestCPPBoostDemo/jni/include/boost/asio/ip/
> detail/socket_option.hpp:449: error: 'struct
> boost::asio::detail::in6_mreq_type' has no member named
> 'ipv6mr_interface'
> /home/nasif/workspace/TestCPPBoostDemo/jni/include/boost/asio/ip/
> detail/socket_option.hpp: In constructor
> 'boost::asio::ip::detail::socket_option::multicast_request<IPv4_Level,
> IPv4_Name, IPv6_Level, IPv6_Name>::multicast_request(const
> boost::asio::ip::address_v6&, long unsigned int)':
> /home/nasif/workspace/TestCPPBoostDemo/jni/include/boost/asio/ip/
> detail/socket_option.hpp:468: error: 'struct
> boost::asio::detail::in6_mreq_type' has no member named
> 'ipv6mr_interface'
> In file included from /home/nasif/workspace/TestCPPBoostDemo/jni/
> include/boost/asio.hpp:56,
>                  from /home/nasif/workspace/TestCPPBoostDemo/jni/
> include/ClientASIO.h:5,
>                  from /home/nasif/workspace/TestCPPBoostDemo/jni/
> include/ClientConnecter.h:2,
>                  from /home/nasif/workspace/TestCPPBoostDemo/jni/
> ClientConnecter.cpp:1:
> /home/nasif/workspace/TestCPPBoostDemo/jni/include/boost/asio/ip/
> multicast.hpp: At global scope:
> /home/nasif/workspace/TestCPPBoostDemo/jni/include/boost/asio/ip/
> multicast.hpp:51: error: 'IPV6_JOIN_GROUP' was not declared in this
> scope
> /home/nasif/workspace/TestCPPBoostDemo/jni/include/boost/asio/ip/
> multicast.hpp:51: error: template argument 4 is invalid
> /home/nasif/workspace/TestCPPBoostDemo/jni/include/boost/asio/ip/
> multicast.hpp:51: error: invalid type in declaration before ';' token
> /home/nasif/workspace/TestCPPBoostDemo/jni/include/boost/asio/ip/
> multicast.hpp:76: error: 'IPV6_LEAVE_GROUP' was not declared in this
> scope
> /home/nasif/workspace/TestCPPBoostDemo/jni/include/boost/asio/ip/
> multicast.hpp:76: error: template argument 4 is invalid
> /home/nasif/workspace/TestCPPBoostDemo/jni/include/boost/asio/ip/
> multicast.hpp:76: error: invalid type in declaration before ';' token
> make: *** [out/apps/boostcpp//objs/testboost/ClientConnecter.o] Error
> 1
> ///////////////////////////////////////////////////////
>  All of this error is mainly due to in.h headerfiles inside netinet
> due to it's mismatch with normal linux include...
> How i will fix this, i am beliving some one of you will face the same
> issue..................
> i already spent three days to fix this things, later i tried with
> android-ndk-r4b-crystax, but the errors are same....
> Please help me...........................
android-ndk-in6.patch
Reply all
Reply to author
Forward
0 new messages