OSには、多くの場合、ダイナミックライブラリの多くのバージョンが含まれています。これらは、コンパイル時にコンパイルされたライブラリに応じてさまざまなプログラムで使用されますが、コンパイルするときに、ソースコードにインクルード/インポートするインストール済みヘッダーに対応するバージョンにリンクする必要があります。
libz.dylib
インストールされたヘッダーが使用するのと同じバージョンへのリンクになります。
2つのバージョンがlibXYZ.1.dylib
ありlibXYZ.2.dylib
、libXYZ.dylib
はへのリンクでlibXYZ.2.dylib
あり、リリースlibXYZ.1.dylib
前にコンパイルおよび配布されたアプリのOSでも利用できるレガシーライブラリであるとしますlibXYZ.2.dylib
。libXYZ.1.dylib
古いバージョンに対してリンクしたい古いフレームワークが存在する可能性があるため、はSDKに含まれています。
2つのバージョンのヘッダーのインターフェースは非常に似ているため、コンパイルして実行しても実際の違いはわかりませんが、将来のバージョンでは、古いバージョンが削除され、新しいバージョンが追加されて、リンク時にプロジェクトが中断する可能性があります。
私が正しく理解していれば、リンカーはファイルリンクを逆参照するので、正しいバージョンを見つけてそのdylib名を保持し、アプリの起動時に動的にリンクします。したがって、libz.dylib
は使用されるパスにはなりません(コンパイル時よりも)。
これは、4.3SDKのXcodeインストールで確認できます。
/Developer/.../SDKs/iPhoneOS4.3.sdk/usr/include/zlib.h
/* 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
libz.dylib
/Developer/.../SDKs/iPhoneOS4.3.sdk/usr/lib/libz.dylib -> libz.1.2.3.dylib