MacOS binary incompatibility

I keep forgetting this; MacOS binaries are not compatible with earlier MacOS versions. I built a bunch of Homebrew stuff on 10.9 and copied the binaries to a 10.8 machine. And get awesome errors like

dyld: lazy symbol binding failed: Symbol not found: ___strlcpy_chk
Referenced from: /usr/homebrew/bin/rsync
Expected in: /usr/lib/libSystem.B.dylib

Some sort of library / linker design choice, I guess. It’s as baffling as Apple’s decision not to allow static linking, because the kernel API may change so you must dynamically link to libc to mediate.

Homebrew has a way to build with –universal, but I think that’s more for 32 bit compatibility than minor OS revisions.