繁体   English   中英

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

[英]Where is the C/C++ Standard Library in Android and iOS?

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

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

这里有几个概念,我将尽量保持简洁。 Android使用Bionic作为其C库。 它还列出了不同的C ++库 ,但是,他们建议你坚持使用libc ++(Clang),因为他们已经停止支持libstdc ++(他们称之为gnustl)而STLPort是古老的。 现在即使他们将libstdc++称为系统运行时,特别是对于libstdc++ ,支持库实际上称为libsupc ++ 为了获得异常和RTTI支持,您需要实现/构建它,这似乎不是Android的情况。

对于Apple来说,这是一个不同的故事。 XCode是IDE(不是编译器!)在旧版本的Mac上,他们发布了一个古老版本的GCC。 有一个过渡期,他们使用llvm-gcc和符号链接gccclang 现在最新版本的XCode仅支持LLVM / Clang。 默认情况下,Mac使用libc ++,但如果您愿意,可以选择libstdc ++。 请记住,尽管Clang尽可能与GCC兼容,但混合libc ++ / libstdc ++编译的库可能并不明智。

你可以在你的工具链中使用不同的C库吗? 不容易。 您需要将选择的C库(即Newlib)移植到平台上,这不是一件容易的事。 此外,您需要构建一个交叉编译器工具链,不仅可以定位该系统,还可以使用新库。 您将不得不调查那些已经为您完成此操作的人。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM