it seems possible in many cases to build a binary on FC5 (64 bits) and run it on FC4 (64 bits). many of the libraries (e.g. 5/7th of the libraries in /lib and /usr/lib) have the same version number. but one attempt to do so resulted in a runtime error for libc while another didn't. and i'm curious about how it happens.
e.g. if you build perl from scratch on FC5 and try to run it on FC4, it fails with the error:
/lib64/libc.so.6: version `GLIBC_2.4' not found
even though the binary is bound to /lib64/libc.so.6 and that file exists on both FC5 and FC4. but if you build something trivial, e.g. the canonical C "hello world" program, or even some mildly complex programs, they bind to /lib64/libc.so.6 successfully and run on both systems.
where is this hidden version info and how is it selectively invoked?