Android和iOS中的C / C ++标准库在哪里?

Ign*_*ant 3 c c++ android ios

据我所知,可以用C / C ++在Android和iOS上编写应用程序,而不用Java和Objective-C。

由于C和C ++都依赖于它们的标准库,因此在此类OS中的何处以及如何实现C / C ++标准库?它是Android NDK之类的更大产品的一部分吗?如果不是,是否可以根据需要使用其他实现?

use*_*035 5

这里有几个概念在起作用,我将尝试使其简短。Android使用Bionic作为其C库。它还列出了不同的C ++库,但是,他们建议您坚持使用libc ++(Clang),因为它们已不再支持libstdc ++(它们称为gnustl),并且STLPort很古老。现在,即使他们特别调用libstdc++了系统运行时libstdc++,该支持库实际上也称为libsupc ++。为了获得异常和RTTI支持,您需要实现/构建此功能,Android似乎并非如此。

对于苹果公司而言,则是另一回事。XCode是IDE(不是编译器!)。在Mac的旧版本上,他们提供了较旧的GCC版本。在过渡时期,他们使用llvm-gcc并链接gccclang。现在,最新版本的XCode仅支持LLVM / Clang。默认情况下,Mac使用libc ++,但是您可以根据需要选择libstdc ++。请记住,尽管Clang尝试与GCC尽可能与ABI兼容,但混合由libc ++ / libstdc ++编译的库可能并不明智。

您可以在工具链中使用其他C库吗?不容易。您需要将选择的C库(即Newlib)移植到不平凡的平台上。此外,您将需要构建一个交叉编译器工具链,该工具链不仅要针对该系统,还要使用新库。您将不得不调查已经为您完成此操作的人员。

现在,即使很简单,也确实没有充分的理由。通常,您只想换出库的某些部分,例如malloc。例如,Android尤其可以使用jemalloc