When I use ldd
on Linux it tells me right away if something is missing, i.e.
ldd -d some_lib.so
libexample.so => not found
libex.2.so => not found
libm.so.6 => /lib/libm.so.6 (0xf5860000)
libdl.so.2 => /lib/libdl.so.2 (0xf785b000)
libc.so.6 => /lib/libc.so.6 (0xf78a9000)
/lib/ld-linux.so.2 (0x46b4c000)
On Mac OS there is no ldd
and people recommend using otool -L
, but that shows which shared libraries are expected, not weather or not they are there. Another approach would be to use dtruss
, but it requires sudo, and it least in my experience the application behaves very differently when it is being dtrussed, and it fails for an entirely different reason (and before it gets to trying to load the troublesome .dylib).
So if you suspect that a shared library is missing, what is the standard approach to finding which one it is on the Mac?