gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 12:45:08 27 4
gpt4 key购买 nike

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

既然 C 和 C++ 都依赖于它们的标准库,那么在这些操作系统中,C/C++ 标准库在何处以及如何实现?它是更大的东西的一部分吗? Android NDK?如果不是,我可以根据需要使用不同的实现吗?

最佳答案

这里有几个概念在起作用,我将尽量保持简短。安卓使用Bionic作为它的 C 库。它还列出了 different C++ libraries但是,他们建议您坚持使用 libc++ (Clang),因为他们已经停止支持 libstdc++(他们称之为 gnuSTL)并且 STLPort 很古老。现在,即使他们将 libstdc++ 称为系统运行时,特别是对于 libstdc++,支持库实际上被称为 libsupc++ .为了获得异常和 RTTI 支持,您需要实现/构建它,Android 似乎并非如此。

对于 Apple,情况就不同了。 XCode 是 IDE(不是编译器!)在旧版本的 Mac 上,他们提供了一个古老版本的 GCC。有一个过渡期,他们使用 llvm-gcc 并将 gcc 符号链接(symbolic link)到 clang。现在最新版本的 XCode 只支持 LLVM/Clang。默认情况下,Mac 使用 libc++,但您可以根据需要选择 libstdc++。请记住,虽然 Clang 试图尽可能与 GCC 兼容,但混合使用 libc++/libstdc++ 编译的库可能并不明智。

您能否在您的工具链中使用不同的 C 库?不容易。您需要将选择的 C 库(即 Newlib)移植到平台,这不是微不足道的。此外,您需要构建一个交叉编译器工具链,它不仅针对该系统而且还使用新库。您将不得不调查已经为您完成此操作的人。

现在即使这很容易,也没有充分的理由这样做。通常情况下,您只想交换库中的选定部分,例如 malloc。 Android 尤其可以使用 jemalloc例如。

关于android - Android 和 iOS 中的 C/C++ 标准库在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48067940/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com