Ubuntu 32에서 Android NDK+NEON 구성 프로세스 및 간단한 사용 예

3044 단어
1. VMware를 이용하여 Windows7 64비트에 Ubuntu13을 설치한다.10 32비트 VM,
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]가 성공적으로 생성되었습니다.정적 라이브러리

좋은 웹페이지 즐겨찾기