[csw-maintainers] Determining shared object dependencies

Maciej (Matchek) Blizinski maciej at opencsw.org
Wed Dec 23 18:10:44 CET 2009


Let's suppose there's a shared object which depends on libstdc++.so.6.
 I'd like to determine its dependencies.  Unfortunately,
libstdc++.so.6 exists in more than one place in the filesystem:

maciej at build8s [build8s]:~ > ls -l /opt/csw/{,gcc4/}lib/libstdc++.so.6
lrwxrwxrwx   1 root     other         19 May 11  2009
/opt/csw/gcc4/lib/libstdc++.so.6 -> libstdc++.so.6.0.10
lrwxrwxrwx   1 root     other         20 Aug  7 11:50
/opt/csw/lib/libstdc++.so.6 -> ./libstdc++.so.6.0.3

How am I supposed to tell which one is the right one?  (Without
trussing the running program, of course.)  The best idea I have is
looking at the RUNPATH property of the library and assuming that the
first one is the right one.  For example, if the RUNPATH was
['/opt/csw/gcc4/lib', '/opt/csw/lib/$ISALIST', '/opt/csw/lib',
'/opt/csw/lib', '/opt/csw/lib/svn'], I would assume that
/opt/csw/gcc4/lib/libstdc++.so.6 is the right one, because
'/opt/csw/gcc4/lib' appears first on the RUNPATH list.

Do you this this is a reliable method?



More information about the maintainers mailing list