Otool
lastmod 2018-11-21created 2016-02-016 edits
Usage
Usage: otool [-arch arch_type] [-fahlLDtdorSTMRIHGvVcXmqQjCP] [-mcpu=arg] [--version] <object file> ...
Flags
-
-f: print the fat headers -
-a: print the archive header -
-h: print the mach header -
-l: print the load commands -
-L: print shared libraries used -
-D: print shared library id name -
-t: print the text section (disassemble with -v) -
-p<routine name>: start dissassemble from routine name -
-s<segname><sectname>: print contents of section -
-d: print the data section -
-o: print the Objective-C segment -
-r: print the relocation entries -
-S: print the table of contents of a library -
-T: print the table of contents of a dynamic shared library -
-M: print the module table of a dynamic shared library -
-R: print the reference table of a dynamic shared library -
-I: print the indirect symbol table -
-H: print the two-level hints table -
-G: print the data in code table -
-v: print verbosely (symbolically) when possible -
-V: print disassembled operands symbolically -
-c: print argument strings of a core file -
-X: print no leading addresses or headers -
-m: don't use archive(member) syntax -
-B: force Thumb disassembly (ARM objects only) -
-q: use llvm's disassembler (the default) -
-Q: use otool(1)'s disassembler -
-mcpu=arg: use `arg' as the cpu for disassembly -
-j: print opcode bytes -
-P: print the info plist section as strings -
-C: print linker optimization hints -
--version: print the version
Useful examples
-
otool -L libsomething.dylib - Prints the full list of shared libraries used by a given library. Similar to ldd.
-
otool -l ams - Prints header information such as
LC_RPATH.
How to check the lIbrary architecture
To check the architecture of a library:
You can also check it with readelf, lipo, or objdump:
$ readelf -h <archive>.a | grep 'Class\|File\|Machine'
$ lipo -info libExample.a
$ objdump -a file.a | grep 'file format'