ARM 32-Bit ELF wird nicht mit qemu-arm ausgeführt

ARM 32-Bit ELF wird nicht mit qemu-arm ausgeführt

Auf meinem Ubuntu 18.04-Rechner verwende ich qemu-arm, um eine 32-Bit-ELF-Datei für die ARM-Plattform auszuführen, wie unten gezeigt:

$ file bin
bin: ELF 32-bit LSB  executable, ARM, EABI5 version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 3.2.0, BuildID[sha1]=5018caf41114f911f0a0fd09c4f9a0bb1191c87a, not stripped

$ qemu-arm bin
bin: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory

Auf einer anderen Maschine mit ARM-Prozessor erhalte ich die folgende Ausgabe, wenn ich ldd auf der Binärdatei ausführe:

$ ldd bin
    libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0xb6e25000)
    /lib/ld-linux-armhf.so.3 (0xb6f11000)

Auf meinem Linux-Rechner habe ich ld-linux-armhf.so.3 installiert und es befindet sich im Pfad: /usr/arm-linux-gnueabihf/lib/ld-linux-armhf.so.3

$ ls -l /usr/arm-linux-gnueabihf/lib/ld-linux-armhf.so.3
lrwxrwxrwx 1 root root 10 Feb 25  2014 /usr/arm-linux-gnueabihf/lib/ld-linux-armhf.so.3 -> ld-2.19.so

Ich habe den symbolischen Link erstellt:

$ sudo ln -s /usr/arm-linux-gnueabihf/lib/ld-linux-armhf.so.3 /lib/ld-linux-armhf.so.3

Allerdings wird die Binärdatei auch dann nicht ausgeführt, da sie die Datei libc.so.6 nicht finden und laden kann.

Wie löse ich dieses Problem?

Antwort1

Stellen Sie dem LD_LIBRARY_PATH das Präfix /lib/arm-linux-gnueabihf voran: (oder setzen Sie es einfach auf /lib/arm-linux-gnueabihf, wenn es in der Zeile, die die ausführbare Datei aufruft, leer ist:

LD_LIBRARY_PATH=/lib/arm-linux-gnueabihf qemu-arm bin

Dadurch sollte die ausführbare Datei in der Lage sein, die Datei zu finden.

verwandte Informationen