Frage

Ich versuche, eine vorkompilierte Binär-Dateien in einem benutzerdefinierten Android Bild zu installieren. Dafür habe ich es in ein neues Verzeichnis in prebuilt/android-arm/ mit einer Android.mk Datei ähnlich wie diese kopiert:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_SRC_FILES := binary_name
LOCAL_MODULE := binary_name
LOCAL_MODULE_CLASS := EXECUTABLES
include $(BUILD_PREBUILT)

Wenn ich also make system_image binary_name ausführen, wird die binäre Datei in Systemabbild /bin/ kopiert. Und wenn ich den Emulator laufen kann ich die Binärdatei in /system/bin sehen. Die Berechtigungen sind die gleichen wie die anderen ausführbaren Dateien (-rwxr-xr-x) und nach file, das ist ein ARM-Binär (ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), stripped).

Aber wenn ich es auf dem Emulator laufen, heißt es:

# binary_name
binary_name: not found

Ich habe es straced und das ist, was ich sehen kann:

# strace binary_name
execve("/system/bin/binary_name", ["binary_name"], [/* 9 vars */]) = -1 ENOENT (No such file or directory)
write(2, "strace: exec", 12strace: exec)            = 12
write(2, ": ", 2: )                       = 2
write(2, "No such file or directory", 25No such file or directory) = 25
write(2, "\n", 1
)                       = 1
io_submit(1, -1344063348, {...} <unfinished ... exit status 1>

Aber die Datei ist da, und strace ist in der Lage, es zu finden.

Jede Idee, was kann passieren?

UPDATE : Wie Kristof sagt, ist dies wahrscheinlich ein Problem der dynamischen Verknüpfung, aber ich habe nicht ldd für Android ARM ...

War es hilfreich?

Lösung

Vielleicht einige der benötigten dynamischen Bibliotheken können nicht gefunden werden.

Versuchen 'ldd binary_name'

Die Ausgabe sollte ein wenig so aussehen, wenn alle Bibliotheken gefunden werden können. Fehlende Bibliotheken sollten deutlich gekennzeichnet sein.

linux-gate.so.1 =>  (0xb7fbf000)
libcap.so.2 => /lib/libcap.so.2 (0xb7fa7000)
libdl.so.2 => /lib/i686/cmov/libdl.so.2 (0xb7fa3000)
libncursesw.so.5 => /lib/libncursesw.so.5 (0xb7f64000)
libm.so.6 => /lib/i686/cmov/libm.so.6 (0xb7f3e000)
libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb7dde000)
libattr.so.1 => /lib/libattr.so.1 (0xb7dd9000)
/lib/ld-linux.so.2 (0xb7fc0000)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top