第二章-OSX概览 C标准库

在Mac OS X中C标准库被称作libSystem。libSystem事实上是一个很大的函数库,里面包含了数个独立的BSD函数库。为了保持兼容Unix中的标准库,例如libc,会被符号链接到libSystem上。另外还有一些库是libSystem内部使用的。libSystem包含以下库

  • libc – C标准库
  • libdbm – 数据库操作库
  • libdl – 动态链接器的API
  • libinfo – 一些“info” API,例如查询当前的DNS,NIS和网络信息的API
  • libkvm – 提供KVM虚拟机的API,一些实用程序例如ps会使用它
  • libm – 标准数学函数库
  • libpoll – 对BSD的select() syscall的包装,模拟System V的poll() syscall
  • libpthread – POSIX线程库
  • librpcsvc – 一个Sun的RPC服务库

libSystem内部使用的库如下

  • libdyldapis – 一个动态链接器的底层API
  • libkeymgr – 用于维护进程的全局状态,这个状态对所有进程的所有线程和所有动态链接库可见
  • liblaunch – launchd的一些接口
  • libmacho – 一个访问Mach-O文件内部信息的API
  • libnotify – 允许应用通过基于命名空间的无状态通知发送事件信息
  • libstreams – 实现了I/O流机制
  • libunc – 创建和分派用户通知的库

libSystem还包含了一个commpage符号的对象文件。commpage是一块被映射到每一个进程地址空间的特殊内存。这块内存是共享且只读的。commpage中包含了常用的系统函数和数据。commpage的符号包含在libSystem一个特殊段下(在__commpage节的__DATA段下)。因此debugger可以使用这些符号。

This entry was posted in OSX Internals笔记. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *