android可执行文件出现error: only position independent executables (PIE) are supported.

问题原因

在android 4.4之后添加了新的保护机制,可执行文件必须是采用PIE编译的,即必须为地址无关代码.

解决方法

如果是使用ndk进行编译的(需要使用到Android.mk脚本),则在脚本中添加:

LOCAL_CFLAGS += -pie -fPIE
LOCAL_LDFLAGS += -pie -fPIE

如果是手动采用交叉编译链进行编译的,则在编译选项上添加-pie -fPIE即可.
也就是说,可以采用xxx(编译器名) -o output xxx.c -pie -fPIE -sysroot=$SYSROOT的方式进行编译.

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页