【错误笔记】error: only position independent executables (PIE) are supported.错误解决

本文针对Android设备上出现的only position-independent executables (PIE) are supported错误,详细解析了该问题的原因,源于Android4.1引入并从5.0开始强制执行的PIE安全机制。文章提供了两种解决方案:一是通过在编译语句中添加-pie和-fPIE选项进行修正,二是提及了包括修改源码和可执行程序头在内的绕过检测方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、问题描述

使用 NDK 编译程序,编译过程正常, adb push 到 android 运行时,出现此问题。

root@XXX_Device:/data/test # ./test
error: only position independent executables (PIE) are supported.
root@XXX_Device:/data/test # 

二、问题分析

此问题与 android 版本升级,相关安全检测机制更新相关;
从 Android 4.1 开始引入 PIE 安全机制,并且从 Android 5.0 正式开启验证,非PIE方式编译的可执行程序无法运行。

三、解决方案

1. 编译语句添加pie选项解决

在 编译选项中,添加 -pie -fPIE 即可;
最简单的例子:
arm-linux-androideabi-gcc -pie -fPIE test.c -o output/test

2. 想办法绕过检测(此处不详述)


—— 2018-12-07 ——

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值