TIL How OS X Executes Applications
Read Alex Denisov’s post BITCODE DEMYSTIFIED. What I have learned from it:
- Bitcode is a bitstream representation of LLVM IR;
- LLVM IR is intermediate representation of LLVM;
- Mach-O (format for iOS and OS X executables) file has segment with compressed bitcode;
- AppStore does thinning striping segments for other platforms (CPUs) but not for all iOS versions.
Read How OS X Executes Applications.
- In order to get a list of dependencies for an executable on OS X, you need to use
otool
. Here I can see that/bin/ls
references three dynamic libraries:
otool -L /bin/ls
/bin/ls:
/usr/lib/libutil.dylib (compatibility version 1.0.0, current version 1.0.0)
/usr/lib/libncurses.5.4.dylib (compatibility version 5.4.0, current version 5.4.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1319.100.3)