libandroid-shmem mostrando o cabeçalho ELF inválido no linux chrooted

1

Eu fiz o chrooted do Debian em marshmallow android (snapdragon 650 [64bit]).

Eu instalei o iceweasel no debian chrooted. Mas mostrou este erro ::

(firefox:16210): Gdk-WARNING **: shmget failed: error 38 (Function not implemented)   Segmentation fault

Então, eu compilei libandroid-shmem.so deste repo usando o android-ndk e copiado da pasta armv8-a para o diretório /lib do debian do chroot. Em seguida, ele solicitou liblog.so .

iceweasel: error while loading shared libraries: liblog.so: cannot open shared object file: No such file or directory

Então eu copiei liblog.so do android-ndk para o diretório debian /lib do chrooted.

Agora, quando eu corro env LD_PRELOAD="/lib/libandroid-shmem.so" iceweasel  . Ele exibe este erro:

iceweasel: error while loading shared libraries: /usr/lib/aarch64-linux-gnu/libc.so: invalid ELF header

Aqui estão alguns detalhes: file /lib/libandroid-shmem.so

/lib/libandroid-shmem.so: ELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, BuildID[sha1]=5ad4582c76effbe27a6688369ad979fea5dfac2a, stripped




$ cat /usr/lib/aarch64-linux-gnu/libc.so


/* GNU ld script
   Use the shared library, but some functions are only in
   the static library, so try that secondarily.  */
OUTPUT_FORMAT(elf64-littleaarch64)
GROUP ( /lib/aarch64-linux-gnu/libc.so.6 /usr/lib/aarch64-linux-gnu/libc_nonshared.a  AS_NEEDED ( /lib/aarch64-linux-gnu/ld-linux-aarch64.so.1 ) )
    
por jonny789 28.01.2017 / 21:26

1 resposta

-1

Como você compilou? Eu compilei e não enfrentei nenhum erro de elfo errado Aqui estão os meus passos para compilar libandroid-shmem

  1. Entre no chroot

  2. Clone este repositório git clone https://github.com/pelya/android-shmem

  3. Obter submodules git submodule update --init libancillary
  4. Agora, para compilá-lo para aarch64 ou arm64, você terá que fazer algumas alterações no script build.sh para copiar o repositório cd android-shmem e excluir o build.sh e criar um novo com qualquer editor de texto que eu esteja usando vi aqui vi build.sh
  5. Copie e cole isso no build.sh e salve

    #!/bin/sh
    
    
    
        gcc -shared -fpic -std=gnu99 -Wall *.c -I . -I libancillary \
                    -o libandroid-shmem.so -Wl,--version-script=exports.txt -lc -lpthread && \
    
    strip libandroid-shmem.so
    
  6. Execute o script de compilação ./build.sh agora você pode ver o binário compilado em seu diretório atual

  7. Agora, exporte-o export LD_PRELOAD=/path/to/your/binary
por 08.07.2018 / 11:29