Here's what I'd do:
- start with a fresh install of the distribution and check that it boots
- add the additionnal programs, one at a time, and check the system boots after each addition
- when you have found the program "foo" that fails, run it through ldd and objdump on the system you've copied it from:
$ ldd foo [result] $ objdump -x foo [result]
ldd shows the exact path of the libraries that "foo" depends on, on the host system. These libraries depend both on some definitions inside "foo", and on the way the host system is installed. It may be that you have several instances of libc.so.6 and only one provides the version that foo requires. On doubt, ldconfig may also provide some hints:
$ ldconfig -p | grep libc.so.6 libc.so.6 (libc6, hwcap: 0x8000000000000, OS ABI: Linux 2.4.1) =>
/lib/i686/libc.so.6 libc.so.6 (libc6, OS ABI: Linux 2.2.5) => /lib/libc.so.6
(redhat 8.0) shows that the one in lib/`uname -m` has a specific hardware definition, and supports a more recent ABI.
objdump shows foo's definitions, especially the exact libs that it depends on, as well as the RPATH/RUNPATH fieds (see "man ld.so" for explanations). It may be (though it is bad practice) that a shared object dependency is included as a complete path.
Hope this helps,
---------------------------------------- firstname dot lastname at jaluna dot com