歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Andorid中C/C++調用Bionic庫問題

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

日期:2017/3/1 9:44:15   编辑:Linux編程

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