Ubuntu 32에서 Android NDK+NEON 구성 프로세스 및 간단한 사용 예
2. 부터https://developer.android.com/tools/sdk/ndk/index.htmlandroid-ndk32-r10-linux-x86 다운로드tar.bz2;
3、android-ndk32-r10-linux-x86.tar.bz2는 Ubuntu의/home/spring/NEON 폴더로 복사하여 압축을 풀기;
4. 환경 변수 설정: 터미널에서 sudovi/etc/profile를 입력하고 프로필 파일을 열고 이 파일을 마지막으로 추가합니다.
export NDKROOT=/home/spring/NEON/android-ndk-r10 (참고: 절대 경로)
export PATH=$NDKROOT:$PATH
5. 프로필 파일을 저장하고 Ubuntu를 다시 시작합니다.
6、echo$PATH를 입력하면/home/spring/NEON/android-ndk-r10이 있습니다.
7. ndk-build을 입력하여 안드로이드 NDK 등 관련 정보를 표시하고 NDK 설정의 성공을 설명한다.
8.arm-linux-gcc(arm 구조를 바탕으로 하는 linux 플랫폼 교차 컴파일 도구)를 설치한다.http://www.arm9.net/download.asparm-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을 입력하고 프로필 파일을 엽니다. 이 파일은 마지막에 exportPATH=$PATH:/home/spring/NEON/opt/Friendly ARM/toolschain/4.3/bin을 추가하고 프로필을 저장합니다.
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]가 성공적으로 생성되었습니다.정적 라이브러리
또 다른 방법은arm-linux-gcc를 설치하지 않고 안드로이드-NDK를 직접 사용하면 된다는 것이다. 조작 절차는 다음과 같다.
1. 상기 7단계를 이어간다.
2. 환경 변수 추가: 터미널에서 sudovi/etc/profile를 입력하고 프로필 파일을 열고 이 파일을 마지막으로 추가합니다.
export NDKBIN=/home/spring/NEON/android-ndk-r10/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86/bin (주의: 절대 경로)
export PATH=$NDKBIN:$PATH
3. 프로필 파일을 저장하고 Ubuntu를 다시 시작합니다.
4、echo$PATH를 입력하면/home/spring/NEON/android-ndk-r10/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86/bin
5、테스트 컴파일.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.cppar –r libtest[android].a *.o libtest[android]가 성공적으로 생성되었습니다.정적 라이브러리
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.