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

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


BionicAndroidC/C++ library, libcGNU/Linux以及其他類Unix系統的基礎函數庫,最常用的就是GNUlibc,也叫glibcAndroid之所以採用bionic而不是glibc,有幾個原因:  

1、版權問題,因爲glibcLGPL

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章