默认情况下,Android NDK 工具链二进制文件是不是在有或没有异常的情况下构建?
Posted
技术标签:
【中文标题】默认情况下,Android NDK 工具链二进制文件是不是在有或没有异常的情况下构建?【英文标题】:Do the Android NDK toolchain binaries build with or without exceptions by default?默认情况下,Android NDK 工具链二进制文件是否在有或没有异常的情况下构建? 【发布时间】:2012-03-18 19:56:22 【问题描述】:阅读 android NDK 文档后,我对这个问题有点困惑。 CPLUSPLUS-SUPPORT.html 声明:
II.1. C++ 异常支持:
NDK 工具链支持 C++ 异常,自 NDK r5 起,但所有 C++ 默认情况下,源编译时使用 -fno-exceptions 支持,例如 与以前版本的兼容性原因。
但是,STANDALONE-TOOLCHAIN.html 说:
5.3 例外,RTTI 和 STL:
工具链二进制文件做默认支持 C++ 异常和 RTTI。 它们是默认启用的,所以如果你使用 -fno-exceptions 和 -fno-rtti 想要在使用它们构建源时禁用它们(例如生成 更小的机器码)。
这两种说法似乎完全相互矛盾。还是我误解了什么?那么默认情况下是启用还是禁用异常?还是可能取决于其他因素?
我的猜测是其中一个文件只是从旧版本中继承而来,这就是差异的原因,但我想知道哪个是正确的。
【问题讨论】:
【参考方案1】:如果您使用提供的ndk-build
系统来构建您的应用程序(您可能就是这样),那么默认情况下会禁用异常。
STANDALONE-TOOLCHAIN.html
仅适用于您将编译器直接用于您自己的构建系统,而不是使用ndk-build
。它是这样说的:
现在可以使用随 Android NDK 提供的工具链 作为独立的编译器。如果您已经拥有 自己的构建系统,只需要能够调用 交叉编译器为它添加对 Android 的支持。
【讨论】:
以上是关于默认情况下,Android NDK 工具链二进制文件是不是在有或没有异常的情况下构建?的主要内容,如果未能解决你的问题,请参考以下文章
sh 为Android开发构建Google Protobuf库。用android ndk独立工具链。
在 ABI 的 NDK 工具链文件夹中找不到工具链,前缀为:mips64el-linux-android 如何修复?