簡體   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