admin 管理员组文章数量: 887019
编译cmake跨平台库的时候,由于没有搞好编译流程,直接使用arm-linux-androideabi-gcc命令编译了一个可执行文件,为了验证是否是安卓平台可用的(哈哈,当然是),就想办法把编译出的文件放到安卓机器上用shell执行。
现在理解了adb shell的作用,就是可以在手机宿主上执行命令的,因此猜测也可以如在Linux系统上执行可执行文件一样执行安卓手机上面的可执行文件。
添加PATH变量:export PATH=$PATH:./android-toolchain/bin (为了下一句命令可以找到arm-linux-androideabi-gcc,或者直接下一句命令写全路径)
编译手机可执行文件:arm-linux-androideabi-gcc main.c
流程如下:
$adb shell
$su
#
使用PC版qq发送可执行文件到手机,文件就直接被存储到路径:/storage/emulated/0/tencent/QQfile_recv 下
将可执行文件拷贝到执行目录下 cp /storage/emulated/0/tencent/QQfile_recv/a.out /data/local
可执行文件放到 /data/local 目录下,cd到可执行目录,保证有可执行权限(chmod 777 a.out),执行./a.out即可。
若报错误:
"./a.out": error: Android 5.0 and later only support position-independent executables (-fPIE).
需要在编译的时候添加选项:
Android.mk脚本
LOCAL_CFLAGS += -pie -fPIE
LOCAL_LDFLAGS += -pie -fPIE
当直接使用arm-linux-androideabi-gcc编译时,执行如下命令:
arm-linux-androideabi-gcc main.c -pie -fPIE 生成可执行文件
参考链接:https://blog.csdn/zhangmiaoping23/article/details/71159867
版权声明:本文标题:编译安卓平台可执行文件,并在安卓手机上执行 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1726384881h949889.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论