新的C库Bionic的介绍
?Google的在創建一個新的C庫代替使用存在GNU c庫或者嵌入式的C庫。有一下的原因:
? ?License:這glibc和uClibc在LGPL下是可獲得的,這就限制了他們由所有的應用程序被使用。代替,Bionic在BSD的執照下發布的,一個高特許的版本版本,沒有設置對于類庫使用的任何限制。
? ?Speed:Bionic是被指定為移動計算。它被裁減去高效率的工作特別在有限的CPU周期和和手機硬件的內存有限。
? ?Size:Bionic被設計盡可能的簡單。它提供在內核設施的輕量級的封裝和很少的APIs,使與其他可選項使相比更小。這一章將覆蓋這些APIs。
二進制兼容:
? ? 盡管它是一個C標準庫,Bionic并不是帶有其他C庫的二進制兼容。對象文件盒靜態庫相對于其他c庫被產生不應該動態的和Bionic相連。這樣導致不能連接或者執行你本地應用程序。
? ?除了這,和其他C庫靜態連接產生任何用用程序和不和Bionic混合在Android平臺沒有任何問題,除非它動態加載了其他系統的類庫在運行期間。
? ?提供了什么:
? ? ?內存管理 ?文件的輸入和輸出 ?字符串處理 機制 日期時間 進程控制 信號處理 socket通信 多線程 用戶和組 系統配置 命名服務開關
? 丟失了什么:
? ?正如上面提到的,被設計為Android平臺和調節為移動計算的。并不是每一個標準C庫被支持的。Android NDK文檔文件提供了一個完整完整丟失函數的列表;然而,這樣的信息在真正的頭文件可以被獲得的。Bionic頭文件位于平臺/android-<api-level>/arch-<architecture>/usr/include在這Android_NDK_HOME目錄下。
? ?每個頭文件在這個目錄包含定義的丟失的函數。列舉在stdio.h頭文件丟失的函數,如下:
?#if 0 /* MISSING FROM BIONIC */
char ?*ctermid(char *);
char ?*cuserid(char *);
#endif /* MISSING */
如果遇見被用來關閉這些行在這頭文件,和相關的注釋指示包含的丟失函數的列表。除了這些列表外指示,這Android NDK文檔也陳述了函數同通過Bionic但是被實現僅僅作為stub,沒有任何或者功能性。
總結
以上是生活随笔為你收集整理的新的C库Bionic的介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: TroubleShoot
- 下一篇: API内存操作