➜ lib otool -L libSystem.B.dylib libSystem.B.dylib: /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1226.10.1) /usr/lib/system/libcache.dylib (compatibility version 1.0.0, current version 75.0.0) /usr/lib/system/libcommonCrypto.dylib (compatibility version 1.0.0, current version 60075.50.1) /usr/lib/system/libcompiler_rt.dylib (compatibility version 1.0.0, current version 62.0.0) /usr/lib/system/libcopyfile.dylib (compatibility version 1.0.0, current version 1.0.0) /usr/lib/system/libcorecrypto.dylib (compatibility version 1.0.0, current version 335.50.1) /usr/lib/system/libdispatch.dylib (compatibility version 1.0.0, current version 501.40.12) /usr/lib/system/libdyld.dylib (compatibility version 1.0.0, current version 360.22.0) /usr/lib/system/libkeymgr.dylib (compatibility version 1.0.0, current version 28.0.0) /usr/lib/system/liblaunch.dylib (compatibility version 1.0.0, current version 765.50.8) /usr/lib/system/libmacho.dylib (compatibility version 1.0.0, current version 875.1.0) /usr/lib/system/libquarantine.dylib (compatibility version 1.0.0, current version 80.0.0) /usr/lib/system/libremovefile.dylib (compatibility version 1.0.0, current version 41.0.0) /usr/lib/system/libsystem_asl.dylib (compatibility version 1.0.0, current version 323.50.1) /usr/lib/system/libsystem_blocks.dylib (compatibility version 1.0.0, current version 65.0.0) /usr/lib/system/libsystem_c.dylib (compatibility version 1.0.0, current version 1082.60.1) /usr/lib/system/libsystem_configuration.dylib (compatibility version 1.0.0, current version 802.40.13) /usr/lib/system/libsystem_coreservices.dylib (compatibility version 1.0.0, current version 19.2.0) /usr/lib/system/libsystem_coretls.dylib (compatibility version 1.0.0, current version 83.40.5) /usr/lib/system/libsystem_dnssd.dylib (compatibility version 1.0.0, current version 625.60.4) /usr/lib/system/libsystem_info.dylib (compatibility version 1.0.0, current version 477.50.4) /usr/lib/system/libsystem_kernel.dylib (compatibility version 1.0.0, current version 3248.60.11) /usr/lib/system/libsystem_m.dylib (compatibility version 1.0.0, current version 3105.0.0) /usr/lib/system/libsystem_malloc.dylib (compatibility version 1.0.0, current version 67.40.1) /usr/lib/system/libsystem_network.dylib (compatibility version 1.0.0, current version 583.50.1) /usr/lib/system/libsystem_networkextension.dylib (compatibility version 1.0.0, current version 1.0.0) /usr/lib/system/libsystem_notify.dylib (compatibility version 1.0.0, current version 150.40.1) /usr/lib/system/libsystem_platform.dylib (compatibility version 1.0.0, current version 74.40.2) /usr/lib/system/libsystem_pthread.dylib (compatibility version 1.0.0, current version 138.10.4) /usr/lib/system/libsystem_sandbox.dylib (compatibility version 1.0.0, current version 460.60.2) /usr/lib/system/libsystem_secinit.dylib (compatibility version 1.0.0, current version 20.0.0) /usr/lib/system/libsystem_trace.dylib (compatibility version 1.0.0, current version 201.10.3) /usr/lib/system/libunc.dylib (compatibility version 1.0.0, current version 29.0.0) /usr/lib/system/libunwind.dylib (compatibility version 1.0.0, current version 35.3.0) /usr/lib/system/libxpc.dylib (compatibility version 1.0.0, current version 765.50.8)
BSD/Mach 原生程序
由于 OS X 兼容 POSIX,所以应用程序移植很方便。
系统调用
POSIX
“可移植操作系统接口(英语:Portable Operating System Interface of UNIX,缩写为POSIX),是IEEE为要在各种UNIX操作系统上运行软件,而定义API的一系列互相关联的标准的总称,其正式称呼为IEEE Std 1003,而国际标准名称为ISO/IEC 9945。此标准源于一个大约开始于1985年的项目。POSIX这个名称是由理查德·斯托曼应IEEE的要求而提议的一个易于记忆的名称。它基本上是Portable Operating System Interface(可移植操作系统接口)的缩写,而X则表明其对Unix API的传承。
当前的POSIX主要分为四个部分[3]:Base Definitions、System Interfaces、Shell and Utilities和Rationale。” —— Wiki
Mach 系统调用
OS X 实在 Mach 内核基础上构建的,是 NeXTSTEP 的遗产,BSD 层是对 Mach 内核的封装,但是 Mach 系统调用仍然可以在用户态访问。
用 otool 查看 x86_64 上动态链接库 libSystem.B.dylib 的实现.(otool 是 OS X 的查看 Mach-O )