Estoy reconstruyendo Android desde la fuente (para flashear en un dispositivo, ahora mismo usando el emulador), tratando de agregar una sola herramienta de línea de comando. Puse mi fuente en repo/exernal/... y escribí Android.mk
.android.mk excepciones de arm-linux-androideabi-g ++ y __cxa_allocate_exception
me sale el siguiente: 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
He buscado a través de las otras cuestiones aquí con las mismas undefines, pero no puede parecer bastante para encontrar la solución para Android.
El último comando de enlace se genera como:
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 es:
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)
Puede alguien ver un problema o me punto en una dirección para conseguir el comportamiento correcto del brazo- linux-androideabi-g ++?
Tengo un problema similar. Intenta ejecutar make con 'showcommands' para obtener las líneas de compilación detalladas. En el mío veo mis '-fexcepciones' pero _also_ '-fno-excepciones' que es el predeterminado. Me pregunto cuál tiene prioridad o si esto tiene algo que ver con el problema de vinculación. Probablemente no. –