Not much use now, but in case other people have this problem, here's the solution (or rather, work-around) that I found:
On my Gentoo system, this happened when /usr/lib/libdl.so disappeared. This isn't a real file, it's a symlink to /lib/libdl.so.2 , so just re-create it, then run 'ldconfig' to make sure the system knows where to find it - e.g.:
ln -s /lib/libdl.so.2 ./libdl.so
That should fix the problem at least temporarily, but it won't stop something
(I don't know what) deleting the symlink again sometimes.