【转】NDK编译可执行文件在Android L中运行显示error: only position independent executables (PIE) are supported.失败问题解决办法。

原文网址:http://blog.csdn.net/hxdanya/article/details/39371759

由于使用了NDK编译的可执行文件在应用中调用,在4.4及之前的版本上一直没出问题。最近由于要测试在Android L上的运行情况发现,当运行该可执行文件时,报如下错误:

error: only position independent executables (PIE) are supported.

PIE这个安全机制从4.1引入,但是Android L之前的系统版本并不会去检验可执行文件是否基于PIE编译出的。因此不会报错。但是Android L已经开启验证,如果调用的可执行文件不是基于PIE方式编译的,则无法运行。解决办法非常简单,在Android.mk中加入如下flag就行。

LOCAL_CFLAGS += -pie -fPIE
LOCAL_LDFLAGS += -pie -fPIE
时间: 2024-08-06 20:55:36

【转】NDK编译可执行文件在Android L中运行显示error: only position independent executables (PIE) are supported.失败问题解决办法。的相关文章

NDK编译可执行文件在Android 中运行显示error: only position independent executables (PIE) are supported.失败问题解决办法。

由于使用了NDK编译的可执行文件在应用中调用,在Android 7.0上的运行情况发现,当运行该可执行文件时,报如下错误: error: only position independent executables (PIE) are supported. PIE这个安全机制从4.1引入,但是Android L之前的系统版本并不会去检验可执行文件是否基于PIE编译出的.因此不会报错.但是Android L已经开启验证,如果调用的可执行文件不是基于PIE方式编译的,则无法运行.解决办法非常简单,在A

ffmpeg2.2在ubuntu下使用NDK编译——并在android工程下测试使用

作者:wainiwann 出处:http://www.cnblogs.com/wainiwann/ 本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利. 摘要:本文主要介绍将FFmpeg音视频编解码库移植到Android平台上的编译和基本测试过程. 环境准备: Ubuntu12.04 TLS android-ndk-r9d-linux-x86_64.tar.bz2 ffmpeg2.2 --------------------

安卓运行机制JNI、Dalvik、ART之间的比较 。android L 修改运行机制。

Android L默认采用ART运行环境,完全兼容64位移动处理器.Google称这将比此前的Dalvik模式性能提高两倍,但是会占用更多的内存空间.Android有三种运行模式:JNI.Dalvik.ART.Dalvik明显是最慢的,完全的JNI模式是最快的但是开发难度高,ART介于两者之间,并且不影响现有开发模式,所以Google选了ART.我们的技术工程师对此做了技术解读: 1)JNI:在开发过程中使用编译器在C/C++等语言直接编译成机器码,运行的时候能够充分利用系统性能,这是最快的.i

android使用友盟实现第三方登录、分享以及微信回调无反应问题解决办法

        Leaning_wk每一次的进步都会拉近与成功的距离! 帐号设置退出   关闭 qq_15855289的博客 目录视图 摘要视图 订阅 异步赠书:Kotlin领衔10本好书      免费直播:AI时代,机器学习如何入门?      程序员8月书讯      每周荐书:Java Web.Python极客编程(评论送书) android使用友盟实现第三方登录.分享以及微信回调无反应问题解决办法 标签: android友盟第三方登录分享微信登录回调问题 2017-02-10 16:2

在Eclipse中编写servlet时出现"The import javax.servlet cannot be resolved" 问题解决办法

方法1:在Eclipse中,右击项目,选择Java Build Path->Libraries->Add External JARs,找到你计算机中tomcat的安装路径,在common\lib文件夹下选中"servlet-api.jar",添加点击"确定",ok! 方法2:把servlet-api.jar拖进工程里面,然后在servlet-api.jar上点右键--Build path--Add to build path,把项目refresh就可以了

Android L中水波纹点击效果的实现

博主参加了2014 CSDN博客之星评选,帮我投一票吧. 点击给我投票 前言 前段时间android L(android 5.0)出来了,界面上做了一些改动,主要是添加了若干动画和一些新的控件,相信大家对view的点击效果-水波纹很有印象吧,点击一个view,然后一个水波纹就会从点击处扩散开来,本文就来分析这种效果的实现.首先,先说下L上的实现,这种波纹效果,L上提供了一种动画,叫做Reveal效果,其底层是通过拿到view的canvas然后不断刷新view来完成的,这种效果需要view的支持,

Android L中的RecyclerView 、CardView 、Palette的使用

<Material Design>提到,Android L版本中新增了RecyclerView.CardView .Palette.RecyclerView.CardView为用于显示复杂视图的新增Widget.Palette作为调色板类,可以让你从图像中提取突出的颜色. RecyclerView RecyclerView作为替代ListView使用,RecyclerView标准化了ViewHolder,ListView中convertView是复用的,在RecyclerView中,是把Vie

Unity3d发布apk文件并在Android虚拟机中运行的操作流程

总的流程分为以下6个步骤: 1.安装java_jdk 2.配置java环境变量 3.更新android的sdk 4.从Unity3d中发布出apk文件 5.创建android虚拟机并运行 6.将apk文件安装到android虚拟机中 (为方便新手,在下面对每个步骤的具体操作及可能遇到的问题详细提一下) 1.安装java_jdk 官网(www.java.com),免费,我安装的文件的名字是jdk-7u10-windows-i586.exe,版本有新旧,你下载到的版本号可能与我不同,不碍事: 2.配

NDK编译可执行文件

对于 C 应用程序的编译链接,自己编写的 makefile 是件比较困难的事情,我们可以利用 NDK 提供的 build 工具,实现我们的目标. 比如我们以hello.c工程: #include <stdio.h>     int main()     {     printf("Hello World!\n");        return 0;     } 编写Android.mk文件 LOCAL_PATH := $(call my-dir) include $(CLE