android源码中的c c++库( android中动态和静态版本都有的库)

from:http://blog.csdn.net/lizhiguo0532/article/details/7219346


通过比较out/.../下的obj中SHARED_LIBRARIES,STATIC_LIBRARIES,删选出一下几个共同的库。
c
cutils
ext4_utils
m
stdc++
thread_db
utils
webcore
z
log

 

android重写的标准c函数库libc:
$ cd STATIC_LIBRARIES
$ cd libc_intermediates
$ ls
arch-arm  bionic  libc.a  unistd  WHOLE
$ cd ../
$ cd SHARED_LIBRARIES/
$ cd libc_intermediates/
$ ls
arch-arm  bionic  LINKED  unistd
$ cd LINKED
$ ls
libc.so
源码路径:bionic/libc
头文件目录:bionic/libc/include
从其Android.mk中可以看出编译了libc.a和libc.so

 

c语言基本的工具库libcutils:
libcutils.a/so的源码路径:system/core/libcutils
头文件路径:system/core/include/cutils
从其Android.mk中可以看出编译了libcutils.a和libcutils.so

 

ext4相关的工具库libext4_utils:
libext4_utils.a/so的源码路径:system/extras/ext4_utils
头文件路径:system/extras/ext4_utils
从其Android.mk中可以看出编译了libext4_utils.a和libext4_utils.so

 

标准数学库libm:math
libm.a/so的源码路径:bionic/libm
头文件路径:bionic/libm/include
例如c++用c的数学库
#include <cmath>
$g++ test.cpp -o test -lm

 

android重写的c++函数库libstdc++:
libstdc++.a/so的源码路径:bionic/libstdc++
头文件路径:bionic/libstdc++/include

 

多线程程序的调试器库libthread_db:
libthread_db.a/so的源码路径:bionic/libthread_db
头文件路径:bionic/libthread_db/include


c++实现的底层工具库libutils:
这个库可以分成两个部分,一个部分是底层的工具,另外一个就是实现主要为实现IPC(进程间通讯)的Binder机制。
libutils.a/so的源码路径:frameworks/base/libs/utils
头文件路径:frameworks/base/include/utils
详细情况键附录:

 

浏览器引擎核心库libwebcore:
libwebcore.a/so的源码路径:external/webkit
头文件路径:

 

通用压缩库libz:
libz.a/so的源码路径:external/zlib


log库:
system/core/liblog


附录:
Android的底层库libutils介绍
 第一部分 libutils概述

  libutils是Android的底层库,这个库以C++实现,它提供的API也是C++的。Android的层次的C语言程序和库,大都基于libutils开发。
  libutils中的头文件如下所示:
  frameworks/base/include/utils
  libutils的源文件:
  frameworks/base/libs/utils
  libutils的库名称:
  libutils.so
  这个库可以分成两个部分,一个部分是底层的工具,另外一个就是实现主要为实现IPC(进程间通讯)的Binder机制。

  第二部分 公共库概述

  libutils中的公共库部分主要包含的头文件如下所示:
  Errors.h:定义宏表示错误代码
  Endian.h:定义表示大小端的宏
  misc.h:几个字符串和文件相关的功能函数

  TextOutput.h:定义文本输出的基类TextOutput
  BufferedTextOutput.h:类BufferedTextOutput,它是一个TextOutput的实现
  Pipe.h:定义管道类Pipe
  Buffer.h:定义内存缓冲区域的类Buffer
  List.h:定义链表的模版类

  SharedBuffer.h:定义类SharedBuffer表示共享内存。
  String16.h:定义表示双字节字符串的类String16
  String8.h:定义表示单字节字符串的类String8,并包含了从String16转换功能

  VectorImpl.h:定义表示向量的类VectorImpl
  Vector.h:定义继承VectorImpl的类模版Vector,以及排序向量类SortedVectorImpl
  SortedVector.h:定义排序向量的模版SortedVector
  KeyedVector.h:定义使用关键字的向量模板KeyedVector

  threads.h:定义线程相关的类,包括线程Thread、互斥量Mutex、条件变量Condition、读写锁      ReadWriteLock等
  socket.h:定义套结字相关的类Socket
  Timers.h:定义时间相关的函数和定时器类DurationTimer。
  ZipEntry.h、ZipFileCRO.h、ZipFile.h、ZipFileRO.h、ZipUtils.h:与zip功能相关的类。


  第三部分 Binder进程间通讯部分

  Binder是进程间通讯部分的核心,它为不同的系统提供了可移植的进程间通讯手段。
  RefBase.h :
  引用计数,定义类RefBase。
  Parcel.h :
  为在IPC中传输的数据定义容器,定义类Parcel
  IBinder.h:
  Binder对象的抽象接口, 定义类IBinder
  Binder.h:
  Binder对象的基本功能, 定义类Binder和BpRefBase
  BpBinder.h:
  BpBinder的功能,定义类BpBinder
  IInterface.h:
  为抽象经过Binder的接口定义通用类,
  定义类IInterface,类模板BnInterface,类模板BpInterface
  ProcessState.h
  表示进程状态的类,定义类ProcessState
  IPCThreadState.h
  表示IPC线程的状态,定义类IPCThreadState


  IServiceManager.h:表示服务管理器的类,供其它需要构造服务的类使用
  IPermissionController.h:权限控制类。

    几个与内存相关的类的头文件如下所示:
  IMemory.h:定义内存相关类的接口,表示堆内存的类IMemoryHeap和BnMemoryHeap,表示一般内存的类

  IMemory和BnMemory。
  MemoryHeapBase.h:定义类MemoryHeapBase,继承并实现BnMemoryHeap
  MemoryBase.h:定义类MemoryBase,继承并实现BnMemory
  在一般的使用过程中,通常是以使用MemoryHeapBase类分配一块堆内存(类似malloc),而MemoryBase表示从一块分配好堆内存中的一部分内存。

  此外内存相关的功能中还包含了头文件MemoryDealer.h和MemoryHeapPmem.h。


转载于:https://my.oschina.net/u/1015229/blog/391455

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在C程序调用源码安装的,在Ubuntu通常需要进行以下步骤: 第一步,安装依赖源码安装的通常依赖于其他的文件,因此在调用之前,需要确保已经安装了这些依赖。可以使用apt-get命令来安装缺失的依赖。 第二步,添加头文件路径:源码安装通常会将的头文件放置在指定的目录下,而程序需要通过包含头文件来使用的函数和数据结构。在C程序,可以通过使用#include指令来包含头文件。因此,在编写C程序时,需要在开头添加如下指令:#include <library_header.h>,其library_header.h是的头文件名。 第三步,链接文件:源码安装会生成文件,通常是以.so(动态链接)或.a(静态链接)的形式存在。而C程序在编译时需要将文件链接到生成的可执行文件,以便程序可以调用其的函数和数据结构。在gcc编译器,可以通过使用-l参数来指定需要链接的。例如,如果文件名为library.so,则编译命令可以写为:gcc -o program program.c -llibrary。 第四步,编写调用代码:在C程序,可以通过调用的函数和使用的数据结构来使用源码安装的。具体的调用方式和使用方法需要根据的文档来确定,通常会提供相应的示例代码。 因此,使用源码安装的需要先安装依赖,然后包含头文件,链接文件,并在C程序编写相应的调用代码。以上就是在Ubuntu在C程序调用源码安装的一般步骤。 ### 回答2: 在C程序调用通过源码安装的Ubuntu需要进行以下步骤: 1. 在编写C程序时,需要包含相应的头文件。这些头文件通常位于文件安装目录的include文件夹。你可以使用命令"sudo find / -name <header_file.h>"来查找头文件的位置。 2. 链接文件。通过源码安装时,编译器不会自动找到并链接文件。你需要将文件的路径添加到链接器的参数。在编译C程序时,你可以使用命令"gcc -o output_file source_file.c -I <library_include_path> -L <library_path> -l <library_name>",其"<library_include_path>"是的头文件路径,"<library_path>"是文件路径,"<library_name>"是名。 3. 调用函数。通过上述步骤,你应该可以在C程序使用函数了。你可以通过引用的头文件来调用的函数,头文件定义了函数的接口。 总结起来,要在C程序调用通过源码安装的Ubuntu,你需要包含头文件、链接文件,并调用函数。 ### 回答3: 在C程序调用通过Ubuntu源码安装的,需要进行以下步骤: 1. 确认的安装路径:使用"dpkg -L"命令查看安装的路径。例如,如果安装了libxxx,可以使用命令"dpkg -L libxxx"查看其安装路径。 2. 在C程序包含头文件:在C程序的开头,使用#include指令包含所对应的头文件。例如,如果安装了libxxx,需要在C程序添加#include <xxx.h>。 3. 链接:在编译C程序时,需要将链接到程序。使用"-l"选项指定需要链接的的名称。例如,如果安装了libxxx,需要在编译命令添加"-lxxx"。如果的安装路径不在系统默认路径,还需要使用"-L"选项指定的路径。 综上所述,使用Ubuntu源码安装的在C程序调用的步骤主要包括确认的安装路径、包含头文件和链接。通过这些步骤,可以在C程序成功调用使用Ubuntu源码安装的

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值