I am facing a weird problem related to android ndk compilation when I put .cpp
file in Android.mk
.
This gives undefined errors :
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_ARM_MODE := arm
LOCAL_MODULE:= rcseucr
LOCAL_CFLAGS+= \
-D__IMSC_PORT_LINUX__\
-D__IMSC_PORT_ANDROID__\
-DICF_PORT_LINUX\
-DICF_PORT_ANDROID
LOCAL_C_INCLUDES := ../../h \
../../../test/gsoap \
../../../test/h
LOCAL_SRC_FILES:= \
../../../gsoap/dom.cpp\
../../../gsoap/soapC.cpp\
../../../gsoap/stdsoap2.cpp\
../../../src/wrapper.cpp\
../../../src/entry_pt.c
LOCAL_LDLIBS := -llog
LOCAL_CPP_FEATURES += exceptions
LOCAL_LDLIBS := -llog
include $(BUILD_STATIC_LIBRARY)
My Errors during compilation are following:
:/android-ndk-r10d/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: jni/librcseucr.a(soapC.o): in function up__im_infoType::~up__im_infoType():D:/android-ndk-r10d/sources/cxx-stl/stlport/stlport/stl/_alloc.h:161: error: undefined reference to 'std::__node_alloc::_M_deallocate(void*, unsigned int)'
Line 162: D:/android-ndk-r10d/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: jni/librcseucr.a(soapC.o): in function _ocp__external_list::~_ocp__external_list():D:/android-ndk-r10d/sources/cxx-stl/stlport/stlport/stl/_alloc.h:161: error: undefined reference to 'std::__node_alloc::_M_deallocate(void*, unsigned int)'
Line 163: D:/android-ndk-r10d/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: jni/librcseucr.a(soapC.o): in function up__urlType::~up__urlType():D:/android-ndk-r10d/sources/cxx-stl/stlport/stlport/stl/_alloc.h:161: error: undefined reference to 'std::__node_alloc::_M_deallocate(void*, unsigned int)'
Line 164: D:/android-ndk-r10d/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: jni/librcseucr.a(soapC.o): in function _rl__resource_lists::~_rl__resource_lists():D:/android-ndk-r10d/sources/cxx-stl/stlport/stlport/stl/_alloc.h:161: error: undefined reference to 'std::__node_alloc::_M_deallocate(void*, unsigned int)'
Line 165: D:/android-ndk-r10d/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: jni/librcseucr.a(soapC.o): in function cp__oneType::~cp__oneType():jni/../../../gsoap/soapStub.h:6831: error: undefined reference to '__cxa_end_cleanup'
Line 166: D:/android-ndk-r10d/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: jni/librcseucr.a(soapC.o):(.ARM.extab.text._ZN11cp__oneTypeD2Ev+0x0): error: undefined reference to '__gxx_personality_v0'
Line 167: D:/android-ndk-r10d/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: jni/librcseucr.a(soapC.o): in function cp__oneType::~cp__oneType():jni/../../../gsoap/soapStub.h:6831: error: undefined reference to '__cxa_end_cleanup'
Line 168: D:/android-ndk-r10d/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: jni/librcseucr.a(soapC.o):(.ARM.extab.text._ZN11cp__oneTypeD0Ev+0x0): error: undefined reference to '__gxx_personality_v0'
Line 169: D:/android-ndk-r10d/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: jni/librcseucr.a(soapC.o): in function _ns4__simservs_extensions::~_ns4__simservs_extensions():D:/android-ndk-r10d/sources/cxx-stl/stlport/stlport/stl/_alloc.h:323: error: undefined reference to '__cxa_end_cleanup'
Line 170: D:/android-ndk-r10d/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: jni/librcseucr.a(soapC.o):(.ARM.extab.text._ZN25_ns4__simservs_extensionsD2Ev+0x0): error: undefined reference to '__gxx_personality_v0'
Line 171: D:/android-ndk-r10d/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: jni/librcseucr.a(soapC.o): in function __oxe__allowOfflineStorageType_sequence::~__oxe__allowOfflineStorageType_sequence():D:/android-ndk-r10d/sources/cxx-stl/stlport/stlport/stl/_alloc.h:323: error: undefined reference to '__cxa_end_cleanup'
Line 172: D:/android-ndk-r10d/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: jni/librcseucr.a(soapC.o):(.ARM.extab.text._ZN39__oxe__allowOfflineStorageType_sequenceD2Ev+0x0): error: undefined reference to '__gxx_personality_v0'
Line 173: D:/android-ndk-r10d/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: jni/librcseucr.a(soapC.o): in function soap_in_std__vectorTemplateOfPointerToocp__anchorType(soap*, char const*, std::vector<ocp__anchorType*, std::allocator<ocp__anchorType*> >*, char const*):D:/android-ndk-r10d/sources/cxx-stl/stlport/stlport/stl/_alloc.h:158: error: undefined reference to 'std::__node_alloc::_M_allocate(unsigned int&)'
Line 174: D:/android-ndk-r10d/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: jni/librcseucr.a(soapC.o): in function soap_copy_std__vectorTemplateOfPointerTorl__entry_refType(soap*, int, int, void*, unsigned int, void const*, unsigned int):D:/android-ndk-r10d/sources/cxx-stl/stlport/stlport/stl/_alloc.h:158: error: undefined reference to 'std::__node_alloc::_M_allocate(unsigned int&)'
Line 175: D:/android-ndk-r10d/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: jni/librcseucr.a(soapC.o): in function soap_copy_std__vectorTemplateOfPointerTorl__entry_refType(soap*, int, int, void*, unsigned int, void const*, unsigned int):D:/android-ndk-r10d/sources/cxx-stl/stlport/stlport/stl/_alloc.h:343: error: undefined reference to '__cxa_allocate_exception'
Line 176: D:/android-ndk-r10d/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: jni/librcseucr.a(soapC.o): in function soap_copy_std__vectorTemplateOfPointerTorl__entry_refType(soap*, int, int, void*, unsigned int, void const*, unsigned int):D:/android-ndk-r10d/sources/cxx-stl/stlport/stlport/stl/_alloc.h:343: error: undefined reference to 'std::bad_alloc::bad_alloc()'
Line 177: D:/android-ndk-r10d/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: jni/librcseucr.a(soapC.o): in function soap_copy_std__vectorTemplateOfPointerTorl__entry_refType(soap*, int, int, void*, unsigned int, void const*, unsigned int):D:/android-ndk-r10d/sources/cxx-stl/stlport/stlport/stl/_alloc.h:343: error: undefined reference to '__cxa_throw'
Line 178: D:/android-ndk-r10d/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: jni/librcseucr.a(soapC.o): in function soap_copy_std__vectorTemplateOfPointerTorl__entry_refType(soap*, int, int, void*, unsigned int, void const*, unsigned int):D:/android-ndk-r10d/sources/cxx-stl/stlport/stlport/stl/_alloc.h:343: error: undefined reference to 'typeinfo for std::bad_alloc'
Line 179: D:/android-ndk-r10d/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: jni/librcseucr.a(soapC.o): in function soap_copy_std__vectorTemplateOfPointerTorl__entry_refType(soap*, int, int, void*, unsigned int, void const*, unsigned int):D:/android-ndk-r10d/sources/cxx-stl/stlport/stlport/stl/_alloc.h:343: error: undefined reference to 'std::bad_alloc::~bad_alloc()'
Line 180: D:/android-ndk-r10d/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: jni/librcseucr.a(soapC.o): in function soap_in_std__vectorTemplateOfxsd__anyType(soap*, char const*, std::vector<soap_dom_element, std::allocator<soap_dom_element> >*, char const*):D:/android-ndk-r10d/sources/cxx-stl/stlport/stlport/stl/_alloc.h:158: error: undefined reference to 'std::__node_alloc::_M_allocate(unsigned int&)'
Line 181: D:/android-ndk-r10d/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: jni/librcseucr.a(soapC.o): in function soap_in_std__vectorTemplateOfPointerTorl__listType(soap*, char const*, std::vector<rl__listType*, std::allocator<rl__listType*> >*, char const*):D:/android-ndk-r10d/sources/cxx-stl/stlport/stlport/stl/_alloc.h:158: error: undefined reference to 'std::__node_alloc::_M_allocate(unsigned int&)'
I am stuck from last 3 days. I have tried two approach but I think both are wrong: 1. If I use this flag:
LOCAL_ALLOW_UNDEFINED_SYMBOLS := true
Then code compiles but it will give runtime error. so this is failed.
2.if I use CFLAG
in my android.mk
CFLAG= -lstdc++\
-x c++
I think I'm using g++ compiler
but then my c code gives an error. So that approach also failed. I am creating .a
file then adding it to another android.mk
as static shared library
but getting undefined reference
Please help regarding this problem!