Установка готового бинарного файла на Android: «не найден»
Я пытаюсь установить готовый двоичный файл в пользовательском образе Android. Для этого я скопировал его в новый каталог вprebuilt/android-arm/
сAndroid.mk
файл похож на этот:
<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>
Так что, если я бегуmake system_image binary_name
, двоичный файл копируется в/bin/
в образе системы. И если я запускаю эмулятор, я вижу бинарный файл в/system/bin
, Разрешения такие же, как и у других исполняемых файлов (-rwxr-xr-x
) и, согласноfile
это двоичный файл ARM (ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), stripped
).
Но когда я запускаю его на эмуляторе, он говорит:
<code># binary_name binary_name: not found </code>
Я сделал это, и вот что я вижу:
<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>
Но файл есть, и Strace может найти его.
Есть идеи о том, что может происходить?
UPDATE: Как говорит Кристоф, это, вероятно, проблема динамического связывания, но у меня нет ldd для Android ARM ...