On 24 November 2017 at 11:16, Alex Kashchenko <akash...@redhat.com> wrote: >> Is your target binary statically linked? If not you'll need >> to tell QEMU where the libraries are, or run it in a chroot >> with the s390x libraries etc. > > > No, it is not statically linked, on ubuntu I am installing multiarch packet > libc6:s390x (goes to /lib/s390x-linux-gnu/libc.so.6 ) for it as a > dependency.
You will need to tell QEMU -L /usr/s390x-linux-gnu so it can find the dynamic libraries. >> (You'll also need to make sure >> it doesn't pick up the x86 /etc/ld.so.cache, because a glibc >> bug means a bigendian dynamic linker crashes when it finds >> a littleendian ld.so.cache, whereas same-endian-wrong-arch >> just ignores it.) > > > That was it > Simple example now works fine for me if I delete /etc/ld.so.cache before > running it. If you're passing QEMU a -L argument you can just create an empty /lib/s390x-linux-gnu/etc/ld.so.cache which will then take precedence over the host's file. That way you don't have to lose the benefits of ld.so.cache for the host system. thanks -- PMM