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 redint g = *src++; // load greenint 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的配置过程及简单使用举例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NEON在Android中的使用举例
- 下一篇: Neon Intrinsics各函数介绍