在 xcode 项目的 Build Phases 设置中,“Link Binary With Libraries” 节,可以添加项目依赖的 framework 和 dylib。
前者没什么问题,后者,会发现,有多个不同的选择,比如,要添加 z 库:
可看到有四个选项,其中三个带有版本号的。为什么呢?如何选择呢?
以 ios6 sdk 为例
cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk/usr/lib ls -l
可以看到
lrwxr-xr-x 1 root wheel 16 3 15 11:04 libz.1.1.3.dylib -> libz.1.2.5.dylib -rwxr-xr-x 1 root wheel 140576 3 15 11:04 libz.1.2.5.dylib lrwxr-xr-x 1 root wheel 16 3 15 11:04 libz.1.dylib -> libz.1.2.5.dylib lrwxr-xr-x 1 root wheel 16 3 15 11:04 libz.dylib -> libz.1.2.5.dylib
只有 libz.1.2.5.dylib 是实体文件,其它都是软连接到这个实体文件。
了解动态库机制的就会明了,在 linux 下是 so-name 机制,iOS 系统中也类似。
所以,添加库的时候,最好是添加 libz.1.dylib 这类只带主版本号的,以便更好维护。
THE END.