关于加入NDK编译环境的方法以及如何加入PIE模块的编译选项

之前在编译一个公司的MTK平台的Android开机加密程序的时候死活编译不通过,后面发现,有一样东西没有设置:

TOOLPREFIX = $(ANDROID_SRC_PATH)/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.8/bin/arm-linux-androideabi-

这一项指的是用Android交叉编译工具链中的arm编译器。

当设置了这一项,我再编译这个程序的时候,又出现某某头文件没有包含,那时就慌了,完全不知道如何解决,后面参考了一些博客后得出结论:

http://blog.csdn.net/smfwuxiao/article/category/1328624

必须要设置NDK来做编译环境,那么这就需要指定NDK的环境变量,如何指定?

到网上搜索下载一个工具:android-ndk-r9b

(1)NDK_HOME设置成环境变量,并指定编译环境的路径:

打开/etc/bash.bashrc后,在第一行添加:export NDK_HOME=/home/pst/tools/android-ndk-r9b/

指定完可以正常编译了,但是程序下载到板子上却发现无法运行,发现是PIE的问题,PIE机制是Android在4.x版本以后引入的一种安全机制,是出于对Android系统的保护而产生的,那么,只需要在Makefile中加入这两个编译选项即可:

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

当然,如果你觉得不爽,也可以把PIE机制给屏蔽掉:

http://blog.csdn.net/morixinguan/article/details/65630027

时间: 2024-08-12 00:45:43

关于加入NDK编译环境的方法以及如何加入PIE模块的编译选项的相关文章

mingw-MinGW编译环境中由文件描述符(fd)获得windows文件句柄有什么方法

问题描述 MinGW编译环境中由文件描述符(fd)获得windows文件句柄有什么方法 我在MinGW中打开了一个文件后把描述出输出来是3,推测MinGW中不是用的文件句柄表示open打开的文件,现在想从这个描述符中获取windows句柄,有什么函数可以实现吗

《Android的设计与实现:卷I》——第1章 1.6 NDK开发环境配置

1.6 NDK开发环境配置 Google官方对NDK(Native Development Kit,原生开发工具集)的解释如下: The Android NDK is a set of tools that allows Android application developers to embed native machine code compiled from C and/or C++ source files into their application packages. 可见,NDK

在Ubuntu中用Android NDK编译FFmpeg

原文:http://www.cnblogs.com/scottwong/archive/2010/12/17/1909455.html 最近在做 Android 上的项目,我被恶心的一塌糊涂.本以为 Java 是 Android 上的一等公民,结果深入学习之后才发现,Java 在 Android 上 就是个做 UI 的,除此之外无论想干什都得用 C 语言去实现.Android 一个非常糟糕差劲的操作系统,甚至连 Windows Mobile 都不如.Android 能取得今天的市场占有率只是因为

android ndk-Android NDK编译已有的C++实现的协议库文件--求助

问题描述 Android NDK编译已有的C++实现的协议库文件--求助 RT,,Android.mk已经写好,NDK也已经配置好.自己写的代码可以用JNI 调用本地方法,但是调用一个用C/C++ 实现的协议库的时候却没有NDK的编译信息,当然也没有产生预期的.so文件.有没有遇到同样问题的大神呢?求助 >>>>> 解决方案 android c++ ndk 的编译环境搭建 解决方案二: http://blog.csdn.net/yangchang999/article/det

《Android应用开发与系统改造实战》——1.5节Android NDK开发环境搭建

1.5 Android NDK开发环境搭建 Android应用开发与系统改造实战 1.5.1 Android NDK简介 Android NDK是编译嵌入在Android应用中的原生代码(C或C++)的工具. Android应用运行在Dalvik虚拟机上.NDK允许开发者用原生代码(C或C++)实现应用的一部分.这将给某些应用带来好处,这种方式可重用代码,而且在某些情况下可加快运行速度. NDK提供了将C和C++源代码生成原生代码库的工具和文件:提供了将原生库嵌入apk文件的方法:提供了兼容An

使用Android Studio自带的NDK编译JNI

/********************************************************************************** * 使用Android Studio自带的NDK编译JNI * 说明: * 省得自己另外去下载NDK,编译JNI,麻烦. * * 2017-4-30 深圳 龙华民治樟坑村 曾剑锋 ****************************************************************************

快速建立Servlet和JSP的运行、调试和编译环境

js|servlet|编译 相信很多刚开始学习Servlet和JSP的朋友都有一个困扰,就是如何快速方便的建立一个Servlet和JSP的运行.调试和编译环境.本人现在正在国外攻读MIT(Master of Information Technology),现在选修的这一科是WBIS(Web Based Information Systems),其包含了许多种技术,如Java,Perl,CGI,Servlet,ASP,Java Script,JSP,OO,UML等等.下面的这篇文章是学校所提供的相

Adopt Open JDK官方文档(四)基于虚拟机的编译环境

译文地址 译者:bobwenx@gmail.com 4.基于虚拟机的编译环境 准备工作 编译你自己的虚拟机 编译你自己的轻量级虚拟机 在Host 与 Guest VM 之间共享文件 适用于 OpenJDK 8 的Vagrant Puppet 环境 4.1 准备工作 请注意,因为所需下载的VM镜像文件高达数GB, 请在稳定的网络环境中进行下载.如果有可能,请使用支持断点续传的下载管理器. MacOS 用户: 请使用 zipeg 来解压缩下载后的文件. 下载后的 .OVA 与 .OVF 文件可以使用

linux-在ubuntu下用ndk编译ffmpeg的问题

问题描述 在ubuntu下用ndk编译ffmpeg的问题 在ubuntu下用ndk编译ffmpeg的时候出现了这个错误: 这个是我的sh文件: make clean export PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt export PLATFORM=$NDK/platforms/android-8/arch-arm export PREFIX=../ff-pure-onelib build_one(){ ./con