On Tue Dec 18, 2001 at 05:38:59PM -0800, Matt Kraai wrote: > Howdy, > > I'd like to make mklibs.py create the minimum number of directory > entries for the libraries it reduces. Unfortunately, my > understanding of shared libraries is almost non-existent, so I'd > appreciate a little help. Is it necessary and sufficient to > create a file named `lib<name>.so.<version>' for each library? Here is the deal. The way to know what is needed is by running the ldd app. For example: $ ldd /bin/true libc.so.6 => /lib/libc.so.6 (0x4001f000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000) $ readelf -d /bin/true | grep NEEDED 0x00000001 (NEEDED) Shared library: [libc.so.6] $ readlink /lib/libc.so.6 libc-2.2.4.so Here, ldd tells us that /bin/true requires a library named "libc.so.6". ldd lists everything tagged as NEEDED in the ELF header (and then recurses through the NEEDED things for each item it finds till all dependancies are resolved). Anyway, back to ldd -- the stuff after the arrow ("/lib/libc.so.6") is where the shared library loader has located a suitably named library. In this case (to make library upgrades on the desktop easy) Debian has the suitably named library be a symlink created by ldconfig. So we can read the link and see that this in fact points elsewhere ("libc-2.2.4.so") but the fact that symlinks are used at all on the boot floppies (where we never upgrade libraries) is simply a waste of inodes (burning 4k a pop for ext2 if I recall correctly). The last item, /lib/ld-linux.so.2, you will noticed has a hard coded path. This is because that is the shared library load, which in fact is an ELF interpreter. Check it out: $ readelf -l /bin/true | grep -A1 INTERP INTERP 0x0000f4 0x080480f4 0x080480f4 0x00013 0x00013 R 0x1 [Requesting program interpreter: /lib/ld-linux.so.2] Anyway, enough pedantry. On to the good stuff. The simplest way to install the correct libraries and not waste time with ldconfig and thereby not waste space with symlinks, is to do something like, which I wrote up a few years ago. -Erik -- Erik B. Andersen http://codepoet-consulting.com/ --This message was written using 73% post-consumer electrons--
Attachment:
checklibs.pl
Description: Perl program
Attachment:
pgpEB88FkRygd.pgp
Description: PGP signature