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

本文标签: 并在 机上 可执行文件 卓平 安卓手