Sto tentando di installare un binario precompilato in un'immagine Android personalizzata. Per questo ho copiato in una nuova directory in prebuilt/android-arm/
con un file Android.mk
simile a questo:Installazione di un binario precompilato su Android: "non trovato"
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := binary_name
LOCAL_MODULE := binary_name
LOCAL_MODULE_CLASS := EXECUTABLES
include $(BUILD_PREBUILT)
Quindi, se corro make system_image binary_name
, il file binario viene copiato /bin/
immagine del sistema a. E se eseguo l'emulatore posso vedere il file binario in /system/bin
. Le autorizzazioni sono le stesse degli altri eseguibili (-rwxr-xr-x
) e, in base allo file
, questo è un binario ARM (ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), stripped
).
Ma quando l'eseguo sull'emulatore, si dice:
# binary_name
binary_name: not found
ho straced e questo è quello che posso vedere:
# 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>
Ma il file è lì, e strace è in grado di trovarlo.
Qualche idea di cosa può accadere?
UPDATE: Come dice Kristof, questo è probabilmente un problema di collegamento dinamico, ma non ho LDD per Android ARM ...
Grazie, probabilmente sei nel modo giusto, sai come posso avere ldd in un'immagine Android? –
La tua catena di strumenti cross compilatore potrebbe averne uno. Prova 'arm-android-ldd' sul tuo sistema host assumendo che gcc sia 'arm-android-gcc'. Puoi anche provare 'readelf -d binary_name' sul tuo sistema host. Entrambi dovrebbero darti un elenco delle librerie dinamiche richieste ma dovrai verificare manualmente l'elenco. –
Confermato, è qualcosa relativo alle librerie condivise, una delle quali non è inclusa nell'immagine costruita. Non sapevo di me stesso, è fantastico :) Grazie! –