ARM ELF de 32 bits não executa usando qemu-arm

ARM ELF de 32 bits não executa usando qemu-arm

Na minha máquina Ubuntu 18.04, estou usando qemu-arm para executar um arquivo ELF de 32 bits para plataforma ARM, conforme mostrado abaixo:

$ 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

Em outra máquina que possui um processador ARM, obtenho a seguinte saída executando ldd no binário:

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

Na minha máquina Linux, instalei: ld-linux-armhf.so.3 e está localizado no caminho: /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

Eu criei o link simbólico:

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

No entanto, mesmo assim o binário não é executado porque não consegue localizar e carregar o arquivo libc.so.6.

Como faço para resolver isso?

Responder1

Prefixe LD_LIBRARY_PATH com /lib/arm-linux-gnueabihf: (ou apenas defina-o como /lib/arm-linux-gnueabihf se estiver vazio na linha que invoca o executável:

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

Isso deve permitir que o executável encontre o arquivo.

informação relacionada