cor*_*bin 13 linker executable android linker-errors dynamic-linking
我有两个可执行文件,它们都是交叉编译的,可以在Android中运行.我已将两者放在同一目录中的设备上.我已将它们所依赖的所有共享库放在同一目录中,包括ld-linux.so.3.我使用以下命令运行可执行文件:
ld-linux.so.3 --library-path/path/to/libraries executable_name
当作为任何用户运行时,它们都适用于旧版本的Android.如果以root身份运行,两者都可以在最新版本的Android上运行.当以任何用户身份运行时,只有一个可以在最新版本的android上运行.相反,它给出:
无法从共享对象映射段:不允许执行executable_name操作
如何找出不能运行的可执行文件的不同之处?
我在网上看了很多,大多数人都会收到这个错误:
A)没有它们所依赖的库之一或可执行文件本身的执行权限.
要么
B)尝试从作为NOEXEC挂载的目录运行.
这两种情况似乎并非如此.它可以找到所有库,我可以自己加载任何库,看看它依赖于解决的其他东西.此外,我可以从感兴趣的目录运行基本脚本.
较新版本的Android,Jelly Bean,是一个不同的Linux内核版本,我想知道这是否相关.
什么给?我该如何调试?
vin*_*yll 11
我在其他情况下遇到此错误。由于某些原因,在尝试使用/ tmp文件夹时会导致错误。
为了解决这个问题,我简单地:
mkdir tmp
export TMPDIR=`pwd`/tmp
Run Code Online (Sandbox Code Playgroud)
问题在于可执行文件的编译方式。它们需要使用正确支持较新的 ARM 设备的交叉编译器进行编译。我使用的编译器生成的可执行文件只能在部分 ARM 设备上运行。问题不在于不同的 Android 版本。
| 归档时间: |
|
| 查看次数: |
12816 次 |
| 最近记录: |