`
ericbaner
  • 浏览: 177582 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

NDK r8支持编译MIPS平台的native so库编译方法介绍

 
阅读更多

Android NDK, Revision 8 (May 2012)

This release of the NDK includes support for MIPS ABI and a few additional fixes.

New features:
  • Added support for the MIPS ABI, which allows you to generate machine code that runs on compatible MIPS-based Android devices. Major features for MIPS include MIPS-specific toolchains, system headers, libraries and debugging support. For more details regarding MIPS support, see docs/CPU-MIPS.html in the NDK package.

    By default, code is generated for ARM-based devices. You can add mips to your APP_ABI definition in your Application.mk file to build for MIPS platforms. For example, the following line instructs ndk-build to build your code for three distinct ABIs:

    APP_ABI := armeabi armeabi-v7a mips

    Unless you rely on architecture-specific assembly sources, such as ARM assembly code, you should not need to touch your Android.mk files to build MIPS machine code.

  • You can build a standalone MIPS toolchain using the --arch=mips option when calling make-standalone-toolchain.sh. See docs/STANDALONE-TOOLCHAIN.html for more details.

Note: To ensure that your applications are available to users only if their devices are capable of running them, Google Play filters applications based on the instruction set information included in your application — no action is needed on your part to enable the filtering. Additionally, the Android system itself also checks your application at install time and allows the installation to continue only if the application provides a library that is compiled for the device's CPU architecture.

Important bug fixes:
  • Fixed a typo in GAbi++ implementation where the result of dynamic_cast<D>(b) of base class object b to derived class D is incorrectly adjusted in the opposite direction from the base class. (Issue 28721)
  • Fixed an issue in which make-standalone-toolchain.sh fails to copy libsupc++.*.
Other bug fixes:
  • Fixed ndk-build.cmd to ensure that ndk-build.cmd works correctly even if the user has redefined the SHELL environment variable, which may be changed when installing a variety of development tools in Windows environments

以上为Android NDK r8官方的release info.

这样,现在为止,NDK可以支持的CPU 指令集及架构平台有ARM, x86, MIPS。

编译方法:

在jni目录下的Applicaton.mk(如没有,需新建),增加一行如下指令:

APP_ABI := armeabi armeabi-v7a mips


其它不用改变。如要编译x86平台的库,可增加一个参数“x86"。

APP_ABI := armeabi armeabi-v7a mips x86

如在windows平台上开发,可以配置好eclipse+cygwin环境,方法见之前的博客文章

http://ericbaner.iteye.com/blog/1511832



分享到:
评论

相关推荐

    在Linux下编译FFmpeg+android ndk成功的脚本及so库

    本文将详细介绍如何在Linux系统下使用NDK编译FFmpeg,并生成适用于Android的.so库。主要涉及的知识点包括: 1. **FFmpeg框架**:FFmpeg提供了多种音视频编解码器,如H.264、AAC等,以及各种格式的容器支持,如MP4、...

    android ndk r8 windows

    3. **库支持**:NDK R8包含了Android系统所需的多种库,如OpenSSL、SQLite等,供开发者在本地代码中使用。 4. **JNI接口**:提供了与Java代码交互的接口,使得Java应用程序可以调用本地库函数。 5. **安全性和稳定性...

    使用Android NDK编译Android平台的eXosip库

    本文将深入探讨如何使用Android NDK(Native Development Kit)来编译适用于Android平台的eXosip库,包括静态库和动态库的构建过程。 首先,eXosip是基于OSI(Open Systems Interconnection)模型的SIP协议栈,它是...

    ndk 编译so库以及java调c、c调java

    本篇将深入探讨如何使用NDK编译SO(Shared Object)库,并实现Java与C/C++之间的相互调用。 首先,我们需要理解NDK的基本概念。NDK提供了一套交叉编译环境,使得开发者能够在本地系统上编译出适用于Android设备的...

    android-arm平台ndk交叉编译python

    这时,我们就需要用到Android NDK(Native Development Kit)进行交叉编译,将Python编译为适用于Android ARM架构的二进制代码。本文将详细讲解如何在Android ARM平台上使用NDK工具进行Python的交叉编译。 首先,...

    使用NDK编译Android第三库.so和.a 参考Github上的工程,仅 有OpenSSL为例pdf

    总结,使用NDK编译Android第三方库,如OpenSSL,涉及到一系列步骤,包括环境配置、源码获取、构建系统配置、编译选项设置、编译和链接、生成.so文件、集成到项目以及在Java代码中的使用。这个过程可能复杂且耗时,但...

    android使用NDK编译curl库源码

    在这个场景中,我们将探讨如何在Android环境下使用NDK(Native Development Kit)编译Curl库源码。 首先,NDK是Google提供的一个工具集,允许开发者在Android应用中集成原生代码。通过NDK,我们可以编写C和C++代码...

    AndroidStudio-NDK开发 编译c代码提供so库和jar包 另外一个app调用,实例源码

    Android Studio支持NDK(Native Development Kit)开发,使得开发者可以在Java层之外编写C/C++代码,并将其编译为本地库(.so文件),供Java层调用。本实例源码提供了完整的流程,展示了如何在Android Studio中进行...

    android ndk jni so库生成

    5. **在Java中调用本地方法**:最后,在Java代码中,通过`System.loadLibrary("native-lib")`加载生成的SO库,然后就可以像调用Java方法一样调用本地方法了。 注意,对于不同架构的设备,需要生成对应架构的SO库,...

    ndk-r8 编译环境(不需要cygwin等)

    本文主要讲解如何在不依赖Cygwin等额外环境的情况下,配置NDK-R8的编译环境,并详细介绍JNI程序的编写步骤。 首先,确保你已经下载了Android NDK的R8版本。在这个例子中,我们假设NDK安装在D盘,路径为"D:\android-...

    android studio ndk-build 编译C生成.so文件demo

    Android Studio配合NDK(Native Development Kit)提供了一种原生代码编译工具——`ndk-build`,可以将C/C++代码编译为.so(共享对象)文件,然后在Java层通过JNI(Java Native Interface)调用。本文将详细讲解如何...

    Android MuPDF 最新代码编译的SO库

    本文将详细介绍如何编译MuPDF的最新代码并生成适用于Android的SO库,以及针对不同架构的64位和32位设备的支持。 1. **MuPDF简介** MuPDF的核心是C语言编写,其设计目标是小而快,适合于嵌入式设备和移动平台。它...

    opencv_contrib + opencv 编译so 库及使用native方法 opencv.zip

    5. **使用CMake构建**:利用NDK的`cmake`命令,编译生成针对不同ABI的SO库。这可能涉及多个步骤,包括生成构建文件、编译源码、链接库等。 6. **生成aar包**:将编译好的SO库和其他资源打包成Android的aar(Android...

    android编译openssl静态库.a 动态库.so

    编译完成后,将生成的`.a`或`.so`库文件添加到Android项目的`jniLibs`目录下,然后在Java或Kotlin代码中通过JNI(Java Native Interface)调用C/C++代码,即可在Android应用中使用OpenSSL提供的加密功能。...

    freetype android 编译so库

    本篇将详细介绍如何在Android环境中编译Freetype库,生成适用于64位架构的SO(共享对象)库。 首先,理解Freetype库:Freetype是一个免费的、高质量的类型渲染引擎,它能够读取并渲染各种字体格式,如TrueType、...

    修改变量后的FFmpeg源码(版本:4.1.3.tar.bz2)可直接在Ubuntu下使用NDK 17C版本进行编译Android.So库文件

    在Android平台上,为了实现对音频和视频的处理,通常需要将FFmpeg源码编译为Android的共享库(.so文件)。在本案例中,提供的FFmpeg源码是经过特定修改的4.1.3版本,修复了某些变量错误,以便适应在Ubuntu操作系统下...

    android-ndk-r8-windows

    此外,NDK 还支持将现有 C/C++ 代码库引入到 Android 平台上。 #### 二、Android NDK r8 版本特点 **Android NDK r8** 是 NDK 的一个特定版本,它带来了多个改进和新特性,具体包括: 1. **性能优化**:r8 版本对...

    编译ffmpeg(ffmpeg6.0+android-ndk-r25c)生成的动态链接库.so文件

    本文将详细讲解如何在Android平台上编译FFmpeg 6.0,并生成适用于不同架构的动态链接库.so文件,包括armeabi-v7a和arm64-v8a。 1. **FFmpeg 框架介绍** FFmpeg 包含了多种音视频编解码器、过滤器和协议,使得...

    android-ndk-r8b编译最新ffmpeg方法详解

    这篇教程主要介绍了如何使用`android-ndk-r8b`编译最新版本的FFmpeg,并将其应用于Android应用程序。以下是对整个过程的详细解释: 1. **FFmpeg的安装**: 首先,你需要在Ubuntu 10.04 LTS环境中安装Git,以便克隆...

    android编译的openssl静态库.a 动态库.so

    本文将详细介绍如何在Android环境下编译OpenSSL生成静态库`.a`和动态库`.so`。 首先,我们有两个关键的脚本文件:`make_static.sh` 和 `make_share.sh`。这两个脚本分别用于编译静态库和动态库。 1. **静态库(.a)...

Global site tag (gtag.js) - Google Analytics