Ubuntu 32下Android NDK+NEON的配置过程及简单使用举例
1、 利用VMware在Windows7 64位下安装Ubuntu13.10 32位虚拟机;
2、 从 https://developer.android.com/tools/sdk/ndk/index.html下载android-ndk32-r10-linux-x86.tar.bz2;
3、 将android-ndk32-r10-linux-x86.tar.bz2复制到Ubuntu的/home/spring/NEON目录下,并解压缩;
4、 配置环境变量:在终端输入 sudovi /etc/profile ,打开profile文件,在此文件最后加上:
export NDKROOT=/home/spring/NEON/android-ndk-r10 (注意:绝对路径)
export PATH=$NDKROOT:$PATH
5、 保存profile文件,重新启动Ubuntu;
6、 输入 echo $PATH,会有/home/spring/NEON/android-ndk-r10 ;
7、 输入 ndk-build,显示AndroidNDK 等相关信息,说明配置NDK成功;
8、 安装arm-linux-gcc(基于arm架构的linux平台交叉编译工具):从http://www.arm9.net/download.asp 下载arm-linux-gcc-4.4.3-20100728.tar.gz;
9、 将arm-linux-gcc-4.4.3-20100728.tar.gz复制到Ubuntu的/home/spring/NEON目录下,并解压缩;tarxvzf arm-linux-gcc-4.4.3-20100728.tar.gz
10、 配置环境变量:在终端输入 sudo vi /etc/profile , 打开profile文件, 在此文件最后加上:exportPATH=$PATH:/home/spring/NEON/opt/FriendlyARM/toolschain/4.4.3/bin ,保存profile;
11、 重新启动Ubuntu,在终端输入 arm-linum-gcc -v ,假设显示gcc version 4.4.3等相关信息,说明配置成功。
演示样例代码(http://hilbert-space.de/?p=22) test.cpp:
void reference_convert (uint8_t * __restrict dest, uint8_t * __restrict src, int n)
{
int i;
for (i=0; i<n; i++)
{
int r = *src++; // load red
int g = *src++; // load green
int b = *src++; // load blue // build weighted average:
int y = (r*77)+(g*151)+(b*28); // undo the scale by 256 and write to memory:
*dest++ = (y>>8);
}
} void neon_convert (uint8_t * __restrict dest, uint8_t * __restrict src, int n)
{
int i;
uint8x8_t rfac = vdup_n_u8 (77);
uint8x8_t gfac = vdup_n_u8 (151);
uint8x8_t bfac = vdup_n_u8 (28);
n/=8; for (i=0; i<n; i++)
{
uint16x8_t temp;
uint8x8x3_t rgb = vld3_u8 (src);
uint8x8_t result; temp = vmull_u8 (rgb.val[0], rfac);
temp = vmlal_u8 (temp,rgb.val[1], gfac);
temp = vmlal_u8 (temp,rgb.val[2], bfac); result = vshrn_n_u16 (temp, 8);
vst1_u8 (dest, result);
src += 8*3;
dest += 8;
}
}
12、运行命令: arm-linux-gcc –g –c –Os –fPIC–mfloat-abi=softfp –mfpu=neon test.cpp
ar –r libtest[android].a *.o 成功生成libtest[android].a静态库。
还有第二种方法,就是无需安装arm-linux-gcc,直接用Android-NDK就可以,操作过程例如以下:
1、 接着以上第7步;
2、 加入环境变量:在终端输入 sudovi /etc/profile , 打开profile文件,在此文件最后加上:
export NDKBIN=/home/spring/NEON/android-ndk-r10/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86/bin(注意:绝对路径)
export PATH=$NDKBIN:$PATH
3、 保存profile文件,重新启动Ubuntu;
4、 输入echo $PATH, 会有/home/spring/NEON/android-ndk-r10/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86/bin
5、 编译test.cpp代码: arm-linux-androideabi-gcc -I/home/spring/NEON/android-ndk-r10/platforms/android-9/arch-arm/usr/include-c -Os –mfloat-abi=softfp –mfpu=neon test.cpp
ar –r libtest[android].a *.o 成功生成libtest[android].a静态库。
Ubuntu 32下Android NDK+NEON的配置过程及简单使用举例的更多相关文章
- Ubuntu 14.04 下 android studio 安装 和 配置【转】
本文转载自:http://blog.csdn.net/xueshanfeihu0/article/details/52979717 Ubuntu 14.04 下 android studio 安装 和 ...
- 下面就介绍下Android NDK的入门学习过程(转)
为何要用到NDK? 概括来说主要分为以下几种情况: 1. 代码的保护,由于apk的java层代码很容易被反编译,而C/C++库反汇难度较大. 2. 在NDK中调用第三方C/C++库,因为大部分的开源库 ...
- Android NDK r9的配置与使用
Android NDK 配置: 网上有很多教程,但大部分是旧版本的内容,最新版本的已经改变,为了让大家少走弯路,在这里针对r9的配置进行记录分享. 要玩NDK,你或多或少要用到以下一些东西,所以先做一 ...
- Android NDK 安装与配置
本文主内容: 1. Android NDK 安装 2. 安装Cygwin与使用NDK编译 3. 在Eclipse中集成C/C++开发环境CDT 4. 安装Sequoyah插件 5. JNI编 ...
- Linux(Ubuntu 16) 下Java开发环境的配置(二)------Tomcat的配置及常见问题
前言 相比于java JDK的配置,Tomcat的配置简单的多,简直就相当于直接运行了,本文以Tomcat8.0为例进行配置 1.Tomcat的下载 地址:https://tomcat.apach ...
- 64位ubuntu下Android开发环境的配置
本文介绍如何在64位ubuntu上搭建android的开发环境. 系统:ubuntu12.04LTS 使用的是ADT Bundle for Linux和jdk1.7(open jdk也可) 一共分为3 ...
- 【转】Windows环境下Android NDK环境搭建
原文网址:http://www.metsky.com/archives/525.html 前面介绍Windows下Android 开发环境配置,主要是面向JAVA开发环境,对只做APK上层应用开发人员 ...
- Windows环境下Android NDK环境搭建
前面介绍Windows下Android 开发环境配置,主要是面向JAVA开发环境,对只做APK上层应用开发人员来讲,基本够用了,由于Linux系统的权限限制和Android封装架构限制,很多涉及底层设 ...
- Ubuntu环境下Anaconda安装TensorFlow并配置Jupyter远程访问
本文主要讲解在Ubuntu系统中,如何在Anaconda下安装TensorFlow以及配置Jupyter Notebook远程访问的过程. 在官方文档中提到,TensorFlow的安装主要有以下五种形 ...
随机推荐
- Cocos2d-x教程第(11)讲-利用遮罩(蒙版)CCLayerColor制作新手引导界面(上)
欢迎转载,转载时请注明原文出处:http://blog.csdn.net/u012945598/article/details/17280019 源码下载地址:http://download.csdn ...
- 关于android的nfc问题
最近在研究android的nfc问题 首先再网上有很多关于android nfc 读写的问题,但是大多数都是关于Mifare Classic类型卡的读写,我百试不得骑解,于是自己写了一些程序供大家参考 ...
- QT调用CURL
QProcess *mProcess; QStringList arguments; arguments<<"--disable-epsv" <<" ...
- python中文注释及输出出错
今天开始接触python,中文报错,你懂的,不细说. 网上很多类似的解决方案,有不是很明确,例如:http://blog.csdn.net/chen861201/article/details/770 ...
- cocos2d-x游戏开发系列教程-坦克大战游戏关卡选择场景的编写下
上篇文章写了Paddle类来处理精灵的点击.触摸事件,现在我们在Paddle的基础上 写一个MyPaddle类,来处理上一关.下一关.开始游戏按钮的点击事件. 1.类声明如下: class MyPad ...
- UVA 11464 - Even Parity(枚举方法)
D Even Parity Input: Standard Input Output: Standard Output We have a grid of size N x N. Each cell ...
- HDU 3584 三维树状数组
三维树状数组模版.优化不动了. #include <set> #include <map> #include <stack> #include <cmath& ...
- 测试kestrel的队列
一.依赖环境的安装 1.sbt wget http://typesafe.artifactoryonline.com/typesafe/ivy-releases/org.scala-tools.s ...
- Android 百度地图 SDK v3.0.0 (三) 加入覆盖Marker与InfoWindow使用
转载请注明出处:http://blog.csdn.net/lmj623565791/article/details/37737213 上篇博客已经实现了地图的定位以及结合了方向传感器用户路痴定位方向, ...
- Swift - 生成各种控件的工厂类(包含标签,按钮,输入框等)
在iOS开发中,页面里有时会大量的用到一些控件,如果要一个个单独创建再设置样式的话就显得很麻烦.我们可以创建一个生成各种控件的工厂类,这样在需要的时候调用下就可以了. 下面以一个自定义的工厂类为例,其 ...