0

我在 SDK 中四处寻找,试图了解实际包含的内容。

我注意到 dylibs 有时会发布多个版本,例如

ls /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/usr/lib
...
libBSDPClient.A.dylib
libBSDPClient.dylib
...
libSystem.B.dylib
libSystem.dylib
...

这些 .A 和 .B 版本有什么用?谁在使用什么?

4

1 回答 1

1

A 和 B 等表示 API 版本。您看到两个的原因是因为非版本化(例如 libSystem.dylib)实际上是版本化版本的符号链接(读取:快捷方式,别名)。您可以看到,如果您执行 ls -F(并查看 @s 以获取链接)或 ls -l(并查看 ->,例如

lrwxr-xr-x@ 1 root wheel 21 Aug 4 19:59 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/usr/lib/libBSDPClient.dylib - > libBSDPClient.A.dylib

所以这里没什么好担心的。基本上,如果有更新版本,您可以简单地链接到它而不是旧版本(使用 ln -s)。这是一个古老的 UN*X 技巧,不仅在 Mac OS 中(也用于 Linux 上的 .so 文件)。大多数是版本A,顺便说一句。不过,libSystem 是 B(自 OS X 诞生以来,它已经被修改了很多)

于 2013-09-12T21:08:27.873 回答