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
	/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)