DK编译系列:手机终端运行可执行文件的方法
DK编译系列:手机终端运行可执行文件的方法
前言总体流程补充说明
前言
该方式为PC上的DK工具生成的可执行文件和库,利用adb导入到手机(未采用Andriod Studio生成带界面的apk文件),直接通过windo
DK编译系列:手机终端运行可执行文件的方法
- 前言
- 总体流程
- 补充说明
该方式为PC上的DK工具生成的可执行文件和库,利用adb导入到手机(未采用Andriod Studio生成带界面的apk文件),直接通过windows的命令窗在安卓原生linux环境上运行仿真。
利用前文博客总结梳理的方法,假设已经生成了可在手机终端运行的二进制文件和相关动态库,我们该如何在终端上跑起来呢?
下面介绍相关手机终端运行可执行文件的流程。
手机硬仿流程:
- 由DK生成相关静态库(.a)/动态库(.so)
- 用DK链接动态库so,生成可执行exe
- 若直接生成的exe,可跳过上一步
- 用adb将exe文件和so库导入手机目录
- 赋予相关可执行文件可执行的权限
- 若有,则将相关输入序列或样本导入手机
- adb push
- adb pull
- 手机上EXPORT下临时链接库,链接到so当前目录
- 链接好所需要动态库
- 运行可执行二进制文件,得到硬仿输出结果,如:
./DEMO
实战举例
- 动态库:libhello.so
- 可执行文件:main
- 主调接收入参:1/2, 1:打印hello,2:打印bye
# 推入终端指定目录
adb push libhello.so /data/local/tmp
adb push main /data/local/tmp
# 声明链接库路径,可选
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/data/local/tmp
# 命令窗进入手机终端
adb shell
cd /data/local/tmp
chmod 777 main
# 运行main,以当前目录作为链接库路径,入参1
LD_LIBRARY_PATH=./ ./main 1
声明相关动态库链接路径的方法
- 统一导入当前文件目录的动态库(仅当前运行阶段临时有效)
- 如:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/data/local/tmp/test
- 如:
- 导入单个动态库(临时有效)
- 如:
export LD_PRELOAD=/usr/lib/gcc/aarch64-linux-gnu/7.5.0/libasan.so
- 如:
- 在运行exe指令前,添加链接路径
- 如:
LD_LIBRARY_PATH=./lib ./DEMO [参数1] [参数2] ...
- 如:
如果运行可执行文件时,报不到相关so库文件等,则可能是因为未进行上面操作。
运行可执行文件,报无可执行权限问题
- 首先,用
chmod 777 filename
,添加可读可写可运行的文件权限 - 其次,若chmod 777无法加可执行权限,则考虑以下因素:
- 注意adb shell推到
sdcard
路径中,没办法用chmod 777,来给文件添加可执行权限 - 建议推到
mnt
或者data
这种高权限目录下,才能加可执行权限
- 注意adb shell推到
#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格
上传时间: 2025-07-16 17:35:02
推荐阅读
留言与评论(共有 9 条评论) |
本站网友 一天中最热的时候 | 17分钟前 发表 |
手机硬仿流程: 由DK生成相关静态库(.a)/动态库(.so)用DK链接动态库so,生成可执行exe 若直接生成的exe,可跳过上一步 用adb将exe文件和so库导入手机目录 赋予相关可执行文件可执行的权限若有,则将相关输入序列或样本导入手机 adb pushadb pull 手机上EXPORT下临时链接库,链接到so当前目录 链接好所需要动态库 运行可执行二进制文件,得到硬仿输出结果,如:./DEMO 实战举例 动态库:libhello.so可执行文件:main主调接收入参:1/2 | |
本站网友 3岁宝宝早餐 | 4分钟前 发表 |
手机硬仿流程: 由DK生成相关静态库(.a)/动态库(.so)用DK链接动态库so,生成可执行exe 若直接生成的exe,可跳过上一步 用adb将exe文件和so库导入手机目录 赋予相关可执行文件可执行的权限若有,则将相关输入序列或样本导入手机 adb pushadb pull 手机上EXPORT下临时链接库,链接到so当前目录 链接好所需要动态库 运行可执行二进制文件,得到硬仿输出结果,如:./DEMO 实战举例 动态库:libhello.so可执行文件:main主调接收入参:1/2 | |
本站网友 东来顺火锅 | 13分钟前 发表 |
1:打印hello,2:打印bye # 推入终端指定目录 adb push libhello.so /data/local/tmp adb push main /data/local/tmp # 声明链接库路径,可选 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH | |
本站网友 东尚观湖 | 22分钟前 发表 |
/data/local/tmp/test 导入单个动态库(临时有效) 如:export LD_PRELOAD=/usr/lib/gcc/aarch64-linux-gnu/7.5.0/libasan.so 在运行exe指令前,添加链接路径 如:LD_LIBRARY_PATH=./lib ./DEMO [参数1] [参数2] ... 如果运行可执行文件时,报不到相关so库文件等,则可能是因为未进行上面操作 | |
本站网友 美中宜和妇儿医院 | 12分钟前 发表 |
运行可执行文件,报无可执行权限问题 首先,用chmod 777 filename,添加可读可写可运行的文件权限其次,若chmod 777无法加可执行权限,则考虑以下因素: 注意adb shell推到sdcard路径中,没办法用chmod 777,来给文件添加可执行权限建议推到 mnt 或者 data 这种高权限目录下,才能加可执行权限 | |
本站网友 腼腆什么意思 | 23分钟前 发表 |
手机硬仿流程: 由DK生成相关静态库(.a)/动态库(.so)用DK链接动态库so,生成可执行exe 若直接生成的exe,可跳过上一步 用adb将exe文件和so库导入手机目录 赋予相关可执行文件可执行的权限若有,则将相关输入序列或样本导入手机 adb pushadb pull 手机上EXPORT下临时链接库,链接到so当前目录 链接好所需要动态库 运行可执行二进制文件,得到硬仿输出结果,如:./DEMO 实战举例 动态库:libhello.so可执行文件:main主调接收入参:1/2 | |
本站网友 阻抑 | 21分钟前 发表 |
1:打印hello,2:打印bye # 推入终端指定目录 adb push libhello.so /data/local/tmp adb push main /data/local/tmp # 声明链接库路径,可选 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH | |
本站网友 遗传色斑 | 25分钟前 发表 |
利用前文博客总结梳理的方法,假设已经生成了可在手机终端运行的二进制文件和相关动态库,我们该如何在终端上跑起来呢? 总体流程 下面介绍相关手机终端运行可执行文件的流程 |