Well, I think your question is not so much focused on libraries as it is general package dependencies.
I'll give you an approach for that in one second, but there is a very low-level approach for libraries specifically.
There's a program called "ldd" (not sure what package(s) provide it). If you run ldd on an executable binary (i.e. not a text script), it should tell you what libraries the binary
might load at runtime. For example:
Code:
$ ldd `which awk`
linux-vdso.so.1 => (0x00007fff00f21000)
libm.so.6 => /lib/libm.so.6 (0x00007fb27c654000)
libc.so.6 => /lib/libc.so.6 (0x00007fb27c2d1000)
/lib64/ld-linux-x86-64.so.2 (0x00007fb27c8e5000)
However, there is no way to go in reverse--that is, find all programs that depend on linux-vdso.so.1 for instance.
Back to the package dependency versus library dependency. Check out
this page if you use Debian-style deb packages. The examples show how to create a dependency graph. For this to work, you need to have the "dot" program installed (which is included in the graphviz package).
It will generate a PNG file depicting what one (or more) packages are needed by any number of top-level packages. The web page also describes how to go in reverse (find all packages that depend on a specific package).
EDIT:
Be careful though. Some high level packages will generate a LOT of dependencies. For instance, I just ran the commands for package openvpn. The data file for the dot program was 200+ kilobytes in size. That will create a massive graph (and likely require a LONG time to process).
EDIT2:
I should also point out that you can get the package dependency information through apt-cache by itself (without the use of dot). See the man page for apt-cache and the "showpkg" action. For me, I prefer the visuals.