Hyp*_*ole 34 xcode linker libz ios xcode4.2
我在评论中提到了这一点,但这似乎是一个值得回答的问题.
我有一个项目,它在三个不同的XCode安装和两个不同的iOS SDK安装之间共享.目前,统一所涉及的开发人员不是一种选择.
当我安装iOS 5 Beta和XCode 4.2 libz.1.2.3.dylib时无处可寻.我发现链接反对libz.1.2.5.dylib处理了这个,但这与XCode和iOS SDK的其他活动安装不兼容.
我在网上研究了这个,并发现了上述建议和这个建议.前者不适合我,后者让我感到紧张.
那么,有什么之间的区别libz.dylib,libz.1.2.3.dylib并libz.1.2.5.dylib和我能安全地跨越Xcode和iOS SDK中的所有安装链接到第一张?
epa*_*tel 28
操作系统通常包含许多版本的动态库.这些是由哪个图书馆,他们在自己的编译时间对编译根据不同的程序中使用,但在编译时要针对对应于头安装你所包含/导入到你的源代码版本的链接.
该libz.dylib链接将指向您安装的标头使用的相同版本.
假设你有2个版本libXYZ.1.dylib和libXYZ.2.dylib,libXYZ.dylib是一个链接libXYZ.2.dylib,并libXYZ.1.dylib是一个遗留LIB,这也是在为OS编发之前的应用程序可libXYZ.2.dylib被释放.在libXYZ.1.dylib已包含在SDK中,因为有可能是仍然要对旧版本中联旧框架.
这两个版本可能有非常类似的接口在头,所以你不会看到任何真正的差异,当你编译和运行,但在未来的版本的旧版本可能会删除,而新添加的链接时,这将使你的项目休息.
如果我理解正确,链接器将取消引用文件链接,以便它找到正确的版本并保留该dylib名称并在应用程序启动时动态链接.所以libz.dylib不会是使用的路径(超过编译时).
我在4.3 SDK的Xcode安装中看到了这一点
/* zlib.h -- interface of the 'zlib' general purpose compression library
version 1.2.3, July 18th, 2005
Copyright (C) 1995-2005 Jean-loup Gailly and Mark Adler
Run Code Online (Sandbox Code Playgroud)
/Developer/.../SDKs/iPhoneOS4.3.sdk/usr/lib/libz.dylib -> libz.1.2.3.dylib
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20743 次 |
| 最近记录: |