Dynamic linking can be delayed, depending on things like static variables to initialize. The ldd tells you about all libs. On hu-ux, extra joy: sometimes you have to chatr the files to unglue the static paths for dynamic linking on each lib:
$ chatr +b disable +s enable -l /usr/local/lib/libintl.sl local/bin/flex
$ chatr +b disable +s enable -l /usr/local/lib/libiconv.sl local/bin/flex
$
Funny thing -- I have a jre6 I downloaded from the uk hu-ux repository, and after unpacking it and chaning $PATH in .profile, ldd -rsv was happy but java -version was not! I had to put the right libjli.sl dir at the end of $SHLIB_PATH for it to work. Weird! For different OS, your ld() ENV variable name may vary.