On Wednesday 10 January 2007 07:53, Alexander Leidinger wrote: > That's not possible. The way the linuxulator works is: > - the linker in userland calls open("/foo/bar") > - kernel looks for "/compat/linux/foo/bar" > * it is there -> return it > * it is not there -> look for "/foo/bar" > + if it is there -> return it > + if it is not there -> return error > - the userland get's something which may be linux or FreeBSD stuff > - the linker read()s this > - the linker sees a wrong ELF ABI and bails out That means the linker tries to open /usr/lib/librt.so.1 instead of /lib/librt.so.1 which doesn't exist under /compat/linux. So I added a symlink there. ln -s ../../lib/librt-2.3.6.so /compat/linux/usr/lib/librt.so.1 And now everything works. - the linker in userland calls open("/usr/lib/librt.so.1") - kernel looks for "/compat/linux/usr/lib/librt.so.1" * it is there -> return it - the linker read()s this - the linker sees a wrong linux kernel ABI (in case of 2.4.2) and calls open("/lib/obsolete/linuxthreads/librt.so.1") % ldd /compat/linux/bin/ls /compat/linux/bin/ls: librt.so.1 => /lib/obsolete/linuxthreads/librt.so.1 (0x4807c000) I think this is an easier solution than changing the runtime linker.Received on Wed Jan 10 2007 - 09:51:56 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:04 UTC