编译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
发布评论