android.mk arm-linux-androideabi-g++ 异常和 __cxa_allocate_exception

标签 android exception

我正在从源代码重建 Android(以闪存到设备上,现在使用模拟器),尝试添加一个命令行工具。我已将我的源代码放在 repo/exernal/... 并编写了 Android.mk

我得到以下未定义:

__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

我在这里搜索了具有相同未定义的其他问题,但似乎无法找到适用于 Android 的解决方案。

最终的链接命令生成为:

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 是:

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)

谁能看到问题或指出我从 arm-linux-androideabi-g++ 获得正确行为的方向?

最佳答案

考虑在 Android.mk 中将 libstd++ 删除为静态,它应该默认为标准 Android 实现,您应该没问题

实际上,我看到您将它添加为静态库和动态库。

删除静态 libstdc++ 或动态 libstdc++。如果还是不行,请尝试删除两者

关于android.mk arm-linux-androideabi-g++ 异常和 __cxa_allocate_exception,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10725810/

相关文章:

android - Branch Deep Link 打不开应用

android - 在不显示选择器的情况下启动 native 相机

python - Django:如何引发 Http401 和 Http403 异常,如 Http404,RAISE EXCEPTION not RESPONSE

android - 无法上传 targetSdkVersion 为 30 的签名 apk

android - 在 Android 中以马赛克风格显示图库中的图像?

java - 无法实例化默认的 tuplizer 异常

c++ - boost 异常和线程安全 - 优于常规异常处理

java - 如何避免 JDBC 驱动程序断开连接时出现异常?

Python多非托管资源和异常安全

android - 如何在 Android Studio 中设置全局工作目录?