OS X、iOS、watchOS、tvOSなどのライブラリのSDKやDeployment Targetはotool
を使って確認できる。
otool
コマンド
$ man otool
...
-l Display the load commands.
...
今回確認するロードコマンド
- OS X
cmd LC_VERSION_MIN_MACOSX
- iOS
cmd LC_VERSION_MIN_IOS
- watchOS
cmd LC_VERSION_MIN_WATCHOS
- tvOS
cmd LC_VERSION_MIN_TVOS
サンプル 1
下記の例では、MacOSX10.11.sdk、Deployment Targetが10.11で作成されたバイナリであることがわかる。
$ otool -l `which ls`
...
Load command 9
cmd LC_VERSION_MIN_MACOSX
cmdsize 16
version 10.11
sdk 10.11
...
- version: Deployment Target
- sdk: SDK
サンプル 2
以前に作成したiOS Deployment Targetが5.0のライブラリをXcode 7.3でコンパイルしたとき、以下の警告が表示された。
ld: warning: object file (/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/7.3.0/lib/darwin/libclang_rt.ios.a(chkstk.S.o)) was built for newer iOS version (6.0) than being linked (5.0)
そこでlibclang_rt.ios.a
のDeployment Targetを確認した。
$ otool -l /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/7.3.0/lib/darwin/libclang_rt.ios.a
...
Load command 1
cmd LC_VERSION_MIN_IPHONEOS
cmdsize 16
version 6.0
sdk n/a
...
するとオブジェクトファイルの個数分、ロードコマンドが表示されるが、いずれもiOS Deployment Targetが6.0であることがわかる。