在Android上安装预构build二进制文件:“not found”

我试图在一个自定义的Android图像中安装一个预编译的二进制文件。 为此,我已经将它复制到prebuilt/android-arm/目录下的一个新目录中,并使用类似下面的Android.mk文件:

 LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_SRC_FILES := binary_name LOCAL_MODULE := binary_name LOCAL_MODULE_CLASS := EXECUTABLES include $(BUILD_PREBUILT) 

因此,如果我运行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 )。

但是当我在模拟器上运行它时,它说:

 # binary_name binary_name: not found 

我已经把它,这是我可以看到:

 # 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> 

但文件在那里,strace能够find它。

任何想法可以发生什么?

更新 :正如Kristof所说,这可能是一个dynamic链接的问题,但我没有ldd的Android的ARM …

Solutions Collecting From Web of "在Android上安装预构build二进制文件:“not found”"

也许一些所需的动态库无法找到。

试试'ldd binary_name'

如果可以找到所有的库,输出应该看起来像这样。 丢失的图书馆应清楚标记。

 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)