Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

android.mk arm-linux-androideabi-g++ exceptions and __cxa_allocate_exception

I am rebuilding Android from source (to flash onto a device, right now using emulator), trying to add a single command line tool. I've put my source in repo/exernal/... and written Android.mk.

I get the following undefines:

__cxa_allocate_exception __cxa_begin_catch __cxa_end_catch __cxa_end_cleanup __cxa_free_exception __cxa_get_exception_ptr __cxa_rethrow __cxa_throw __gxx_personality_v0 

I've searched through the other issues here with the same undefines, but can't quite seem to find the solution for Android.

The final link command gets generated as:

prebuilt/darwin-x86/toolchain/arm-linux-androideabi-4.4.x/bin/arm-linux-androideabi-g++ -nostdlib -Bdynamic -Wl,-T,build/core/armelf.x -Wl,-dynamic-linker,/system/bin/linker -Wl,--gc-sections -Wl,-z,nocopyreloc -o out/target/product/generic/obj/EXECUTABLES/wavsender_intermediates/LINKED/wavsender -Lout/target/product/generic/obj/lib -Wl,-rpath-link=out/target/product/generic/obj/lib -lc -llog -lcutils -lnetutils -lc -lstdc++ -lm  out/target/product/generic/obj/lib/crtbegin_dynamic.o    out/target/product/generic/obj/EXECUTABLES/wavsender_intermediates/ohSongcast/WavSender/WavSender.o              out/target/product/generic/obj/STATIC_LIBRARIES/liblog_intermediates/liblog.a out/target/product/generic/obj/STATIC_LIBRARIES/libcutils_intermediates/libcutils.a out/target/product/generic/obj/STATIC_LIBRARIES/libopenhome_intermediates/libopenhome.a out/target/product/generic/obj/STATIC_LIBRARIES/libgtest_intermediates/libgtest.a out/target/product/generic/obj/STATIC_LIBRARIES/libstlport_static_intermediates/libstlport_static.a out/target/product/generic/obj/STATIC_LIBRARIES/libstdc++_intermediates/libstdc++.a out/target/product/generic/obj/STATIC_LIBRARIES/libgabi++_intermediates/libgabi++.a   -Wl,-z,noexecstack -Wl,--icf=safe -Wl,--fix-cortex-a8 prebuilt/darwin-x86/toolchain/arm-linux-androideabi-4.4.x/bin/../lib/gcc/arm-linux-androideabi/4.4.3/armv7-a/libgcc.a out/target/product/generic/obj/lib/crtend_android.o 

Android.mk is:

include $(CLEAR_VARS) LOCAL_MODULE := wavsender LOCAL_MODULE_TAGS := eng LOCAL_CFLAGS += -fexceptions -D_GNU_SOURCE -DPLATFORM_ANDROID LOCAL_SRC_FILES += WavSender.cpp LOCAL_SHARED_LIBRARIES := libc libcutils libnetutils LOCAL_STATIC_LIBRARIES := libcutils libopenhome LOCAL_STATIC_LIBRARIES += libopenhome libgtest libstlport_static libstdc++ libgabi++ LOCAL_LDLIBS += -lstdc++ include external/stlport/libstlport.mk include $(BUILD_EXECUTABLE) 

Can anyone see a problem or point me in a direction to get the correct behavior from arm-linux-androideabi-g++ ?

like image 500
android.mk.user Avatar asked May 23 '12 18:05

android.mk.user


1 Answers

Consider removing libstd++ as a static in Android.mk it should default to the standard Android implementation and you should be fine

Actually, I see you added it both as a static and dynamic libraries.

Remove either static libstdc++ or the dynamic one. If that doesn't do it try removing both

like image 183
Ishay Peled Avatar answered Oct 05 '22 22:10

Ishay Peled