我有两个可执行文件,都交叉编译以在 Android 中运行。我已将两者放在同一目录中的设备上。我把它们所依赖的所有共享库都放在了同一个目录下,包括ld-linux.so.3。我使用以下命令运行可执行文件:
ld-linux.so.3 --library-path /path/to/libraries executable_name
以任何用户身份运行时,两者都适用于旧版本的 Android。如果以 root 身份运行,两者都可以在最新版本的 Android 上运行。以任何用户身份运行时,只有一个适用于最新版本的 android。相反,它给出:
无法从共享对象映射段:不允许执行可执行名称操作
如何找出无法运行的可执行文件有什么不同?
我在网上阅读了很多,大多数人都收到了这个错误,要么:
A) 对它们所依赖的库之一或可执行文件本身没有执行权限。
或者
B) 正在尝试从挂载为 NOEXEC 的目录运行。
这两种情况似乎都不是。它可以找到所有库,我可以自己加载任何库,并查看它依赖于解决的其他内容。此外,我可以从感兴趣的目录运行基本脚本。
较新的 Android 版本 Jelly Bean 是一个不同的 linux 内核版本,我想知道这是否相关。
送什么?我该如何调试?