歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Andorid中C/C++調用Bionic庫問題

Bionic是Android的C/C++ library, libc是GNU/Linux以及其他類Unix系統的基礎函數庫,最常用的就是GNU的libc,也叫glibc。Android之所以采用bionic而不是glibc,有幾個原因: 
 
1、版權問題,因為glibc是LGPL
 
2、庫的體積和速度,bionic要比glibc小很多。
 
3、提供了一些Android特定的函數,getprop LOGI等

由於這個是基礎library,因此在開發中(特別是底層開發中),不可避免要調用到這個庫中的一些方法。在使用這些方法的時候,要引用包含這些方法的頭文件,添加路徑如下:

外部引用bionic頭文件
 
Include Paths: 
 
 
  The Androidbuild system should automatically provide the necessary include
 
  paths requiredto build against the C library headers. However, if you want
 
  to do thatyourself, you will need to add:
 
 
 
    libc/arch-$ARCH/include
 
    libc/include
 
    libc/kernel/common
 
    libc/kernel/arch-$ARCH
 
 
 
  to your Cinclude path.
 
 
 
 
 這些就是android系統中使用的標C頭文件所在處
 
-------------
 

bionic主要目錄結構及主要功能如下:
 
|-- Android.mk
 
 
 
|-- CleanSpec.mk
 
|-- libc  (c 庫)
 
|  |-- Android.mk
 
|  |-- arch-arm (arm構架相關的實現,主要是針對arm的優化,以及和處理器相關的調用)
 
|  |-- arch-sh  (ST公司的SH4體系實現)
 
|  |-- arch-x86 (x86架構相關的實現)
 
|  |-- arch-mips(mips架構相關的實現)
 
|  |-- bionic
 
|  |-- CAVEATS
 
|  |-- docs
 
|  |-- include
 
|  |-- inet
 
|  |-- Jamfile
 
|  |-- kernel
 
|  |--MODULE_LICENSE_BSD
 
|  |-- netbsd
 
|  |-- NOTICE
 
|  |-- private
 
|  |-- README
 
|  |-- regex
 
|  |-- stdio
 
|  |-- stdlib
 
|  |-- string
 
|  |--SYSCALLS.TXT
 
|  |-- tools
 
|  |-- tzcode
 
|  |-- unistd
 
|  |-- wchar
 
|  `-- zoneinfo
 
|-- libdl      (動態鏈接庫訪問接口 dlopen dlsym dlerrordlclose dladdr的實現)
 
|  |-- Android.mk
 
|  |-- arch-sh
 
|  |-- dltest.c
 
|  |-- libdl.c
 
|  |--MODULE_LICENSE_BSD
 
|  `-- NOTICE
 
|-- libm  (C數學函數庫,提供了常見的數序函數和浮點運算)
 
|  |-- alpha
 
|  |-- amd64
 
|  |-- Android.mk
 
|  |-- arm
 
|  |-- bsdsrc
 
|  |--fpclassify.c
 
|  |-- i386
 
|  |-- i387
 
|  |-- ia64
 
|  |-- include
 
|  |-- isinf.c
 
|  |--Makefile-orig
 
|  |-- man
 
|  |--MODULE_LICENSE_BSD_LIKE
 
|  |-- NOTICE
 
|  |-- powerpc
 
|  |-- sh
 
|  |-- sincos.c
 
|  |-- sparc64
 
|  `-- src
 
|-- libstdc++  (standard c++ lib)
 
|  |-- Android.mk
 
|  |-- include
 
|  |--MODULE_LICENSE_BSD
 
|  |-- NOTICE
 
|  `-- src
 
|-- libthread_db (線程調試庫,可以利用此庫對多線程程序進行調試)
 
|  |-- Android.mk
 
|  |-- include
 
|  |--libthread_db.c
 
|  |--MODULE_LICENSE_BSD
 
|  `-- NOTICE
 
|-- linker (Androiddynamic linker)
 
|  |-- Android.mk
 
|  |-- arch
 
|  |-- ba.c
 
|  |-- ba.h
 
|  |-- debugger.c
 
|  |-- dlfcn.c
 
|  |-- linker.c
 
|  |--linker_debug.h
 
|  |--linker_format.c
 
|  |--linker_format.h
 
|  |-- linker.h
 
|  |-- MODULE_LICENSE_APACHE2
 
|  |-- NOTICE
 
|  |-- README.TXT
 
|  `-- rt.c
 
|-- MAINTAINERS

更多Android相關信息見Android 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=11

Copyright © Linux教程網 All Rights Reserved