HOW-TO: using truss, ldd and nm to observe binary files

I’ve decided to write down a few useful tips on observing binary files in Solaris. The commands used are available since Solaris 8, so hopefully you’ll find these tricks useful.

Quite often it happens that the programs we run don’t work as they should, showing us errors like “referenced symbol not found” or this:

ld.so.1: ./thunderbird-bin: fatal: libmozjs.so: open failed: No such file or directory

So in order for us to find out what exact librabries are being used by a given binary, or where it expects these libraries to be found, and what libraries are not found at all, we have to take the following steps:

1. Determine what libraries are needed

First we have to see what libraries the ld linker is going to use for our file. For instance, this is how you would find our what libraries are used by the main executable of the Thunderbird mail client:

[Read more…]