Instalowanie gotowego pliku binarnego na Androida: „not found”
Próbuję zainstalować wstępnie skompilowany plik binarny w niestandardowym obrazie Androida. W tym celu skopiowałem go do nowego katalogu wprebuilt/android-arm/
zAndroid.mk
plik podobny do tego:
<code>LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_SRC_FILES := binary_name LOCAL_MODULE := binary_name LOCAL_MODULE_CLASS := EXECUTABLES include $(BUILD_PREBUILT) </code>
Więc jeśli ucieknęmake system_image binary_name
, plik binarny jest kopiowany do/bin/
w obrazie systemu. A jeśli uruchomię emulator, zobaczę plik binarny w/system/bin
. Uprawnienia są takie same jak inne pliki wykonywalne (-rwxr-xr-x
) i zgodnie zfile
, to jest plik binarny ARM (ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), stripped
).
Ale kiedy uruchamiam go na emulatorze, mówi:
<code># binary_name binary_name: not found </code>
Straciłem to i to widzę:
<code># 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> </code>
Ale plik jest tam i strace jest w stanie go znaleźć.
Czy wiesz, co może się zdarzyć?
AKTUALIZACJA: Jak mówi Kristof, jest to prawdopodobnie problem dynamicznego łączenia, ale nie mam ldd dla Androida ARM ...