Mac OS X上的标准C库在哪里?

我试图在Mac OS X上找到标准的C库。我尝试过像“/usr/lib/libc.a”或“/usr/lib/libm.a”这样的路径,但是没有这样的文件系统。 你能告诉我在哪里找到它吗?

然后我在Linux机器上使用Terminal并运行这样的命令:

ar t /usr/lib/libc.a 

它返回一个.o文件列表,那些.o文件是这样的:

 svc.o xdr.o ... 

这些文件的含义是什么? 哪里可以找到它们?

标准库是OS X上libSystem.dylib的一部分。

它看起来像是:

 /usr/lib/libSystem.B.dylib 

在我的机器上(MacOS X 10.6.7)。

为了回答问题的另一半,OS X通常不使用静态库( .a )。 因此,OS X上没有libc.a (或libSystem.a )。

回答第二个问题:静态库保存在归档文件中,因此.a 。 因此它们只是一堆文件的容器,就像ZIP,TAR,RAR等减去任何压缩。 ar (代表存档 )实用程序列出的那些文件是打包到存档中的原始文件。 您可以解压缩并获取原始文件。

静态库与动态库形成鲜明对比。 静态库的内容由链接器提取并在链接时包含在您的程序中,就好像它们只是程序构建过程的其他编译阶段的结果一样。

动态库OTOH不仅仅是目标文件的归档,而且它们本身是链接可执行文件,动态链接器将它们映射到链接进程地址空间,并调整符号表以匹配映射地址。

实际上它确实存在于/usr/lib/system/libsystem_c.dylib

您可以使用$ nm -gU /usr/lib/system/libsystem_c.dylibvalidation: $ nm -gU /usr/lib/system/libsystem_c.dylib