World Library  
Flag as Inappropriate
Email this Article

Bionic (software)

Article Id: WHEBN0031200920
Reproduction Date:

Title: Bionic (software)  
Author: World Heritage Encyclopedia
Language: English
Subject: Android (operating system), Linux kernel, Embedded GLIBC, Musl, Klibc
Collection: Android (Operating System), C Standard Library, Interfaces of the Linux Kernel, Software Using the Bsd License
Publisher: World Heritage Encyclopedia

Bionic (software)

Developer(s) Open Handset Alliance
Initial release September 23, 2008 (2008-09-23)[1]
Operating system Android[2]
Platform Linux kernel
Type C standard library
License 3-clause BSD licence

The Bionic libc is a derivation of the BSD's standard C library code that was originally developed by Google for their Android[2] operating system based on the Linux kernel. Bionic has several major features specific to the Linux kernel, and its development continues independently of other Android's source code bases.


  • Overview 1
  • Features and limitations 2
  • See also 3
  • References 4
  • External links 5


Publicly stated goals for Bionic are the following:[3][4]

  • BSD license is a non-copyleft license and Google wished to isolate Android applications from the effects of both the GPL and the LGPL:
    • Android is based on the Linux kernel, which is subject to the GNU General Public License (GPL) version 2.
    • The most widespread standard C libraries for the Linux kernel are the GNU C Library and uClibc, which are both subject to the GNU Lesser General Public License (LGPL); in contrast to the GPL, the LGPL explicitly allows for dynamic linking but it does not allow static linking of proprietary software.
  • Small size: Bionic is much smaller than the GNU C Library (glibc) and somewhat smaller than uClibc.
  • Speed: Bionic is designed for CPUs at relatively low clock frequencies.

The recommended way of using Bionic is with the Android Native Development Kit (NDK).

Features and limitations

Bionic has several restrictions compared to glibc, often derived from the fact that Bionic is a library specifically designed for Android.[3][5][6] Some of the limitations include:

  • Bionic does not include C++ exception handling, perhaps as Google does not use C++ exceptions[7] and Java exceptions are available once the Java virtual machine is started
  • Bionic does not include the Standard Template Library, and developers must include it manually if they need it
  • Bionic does not include wide character support
  • Some functions within Bionic's POSIX and system call headers are stubs or wrappers for Android-specific behavior, causing unintended behavior in some instances.[3][6][8][9]
  • As of Android Jelly Bean MR1 (4.2), bionic builds used in Android include support for glibc's FORTIFY_SOURCE,[10] which is a feature where unsafe string and memory functions (such as strcpy() strcat() and memcpy()) include checks for buffer overruns when buffer sizes can be determined at compile time. This feature is only available for applications compiled with gcc for ARM processors.[11]

See also


  1. ^ "Announcing the Android 1.0 SDK, release 1". September 9, 2008. Retrieved September 21, 2012. 
  2. ^ a b "Android Anatomy and Physiology" (PDF).  
  3. ^ a b c Burnette, Ed (June 4, 2008). "Patrick Brady dissects Android".  
  4. ^ Turner, David (2009-02-07). "Questions about Bionic". The name "Bionic" comes from the fact that it is part-BSD and part-Linux: its source code consists in a mix of BSD C library pieces with custom Linux-specific bits used to deal with threads, processes, signals and a few others things. 
  5. ^ Devos, Devos (2014). "Bionic vs Glibc report - Master thesis". Retrieved 2014-03-22. 
  6. ^ a b Gentry, Denton (2008-11-28). "The Six Million Dollar LibC". 
  7. ^ "Google C++ Style Guide".  
  8. ^ "Not working on Xoom/Android 3.0 Honeycomb". 2011-04-15. 
  9. ^ "getmntent() is not implemented in bionic/libc/bionic/stubs.c". 2011-02-25. 
  10. ^ "Jelly Bean". Android Developers. Retrieved 2013-12-27. 
  11. ^ "Android 4.2 and FORTIFY_SOURCE". Android Security Discussions. Retrieved 2013-12-27. 

External links

  • Google I/O 2008 - Anatomy and Physiology of an Android on YouTube
  • Developer home page for Android
  • Android Native Development Kit (NDK) home page
  • Bionic sources (Github mirror of the official repository)
  • Bionic notes on
This article was sourced from Creative Commons Attribution-ShareAlike License; additional terms may apply. World Heritage Encyclopedia content is assembled from numerous content providers, Open Access Publishing, and in compliance with The Fair Access to Science and Technology Research Act (FASTR), Wikimedia Foundation, Inc., Public Library of Science, The Encyclopedia of Life, Open Book Publishers (OBP), PubMed, U.S. National Library of Medicine, National Center for Biotechnology Information, U.S. National Library of Medicine, National Institutes of Health (NIH), U.S. Department of Health & Human Services, and, which sources content from all federal, state, local, tribal, and territorial government publication portals (.gov, .mil, .edu). Funding for and content contributors is made possible from the U.S. Congress, E-Government Act of 2002.
Crowd sourced content that is contributed to World Heritage Encyclopedia is peer reviewed and edited by our editorial staff to ensure quality scholarly research articles.
By using this site, you agree to the Terms of Use and Privacy Policy. World Heritage Encyclopedia™ is a registered trademark of the World Public Library Association, a non-profit organization.

Copyright © World Library Foundation. All rights reserved. eBooks from Project Gutenberg are sponsored by the World Library Foundation,
a 501c(4) Member's Support Non-Profit Organization, and is NOT affiliated with any governmental agency or department.