gpt4 book ai didi

android - 在 Android : "not found" 上安装预构建的二进制文件

转载 作者:IT王子 更新时间:2023-10-29 00:49:13 25 4
gpt4 key购买 nike

我正在尝试在自定义 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 位LSB 可执行文件,ARM,版本 1 (SYSV),动态链接(使用共享库),剥离)。

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

# 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 能够找到它。

知道会发生什么吗?

更新:正如 Kristof 所说,这可能是动态链接的问题,但我没有适用于 Android ARM 的 ldd...

最佳答案

可能是某些需要的动态库找不到。

试试'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)

关于android - 在 Android : "not found" 上安装预构建的二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1043257/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com