2012-05-14 3 views
3

안드로이드 용 ffmpeg를 컴파일하고 싶습니다.
하지만 내가 시도 할 때마다 나는 ffmpeg의 소스를 컴파일 할 수 없다.
내 구성 옵션이 유효하지 않을 수 있습니다.안드로이드 용 FFmpeg (configure, make)

이 스크립트를 구성에 사용했습니다.

#!/bin/sh 
NDK_PATH=$HOME/android-ndk-r8 
PREBUILT=$NDK_PATH/toolchains/arm-linux-androideabi-4.4.3/prebuilt/darwin-x86 

LDFLAGS="-Wl,-T,$PREBUILT/armelf_linux_eabi.x -Wl,-rpath-link=$NDK_PATH/platforms/android-8/arch-arm/usr/lib \ 
    -L$NDK_PATH/platforms/android-8/arch-arm/usr/lib -nostdlib $PREBUILT/lib/gcc/arm-linux-androideabi/4.4.3/crtbegin.o \ 
    $PREBUILT/lib/gcc/arm-linux-androideabi/4.4.3/crtend.o -lc -lm -ldl" 
COMMON_CONFIG="\ 
      ./configure --target-os=linux \ 
      --arch=arm \ 
      --enable-cross-compile \ 
      --cc=$PREBUILT/bin/arm-linux-androideabi-gcc \ 
      --as=$PREBUILT/bin/arm-linux-androideabi-gcc \ 
      --cross-prefix=$PREBUILT/bin/arm-linux-androideabi- \ 
      --sysinclude=$NDK_PATH/platforms/android-8/arch-arm/usr/include \ 
      --nm=$PREBUILT/bin/arm-linux-androideabi-nm \ 
      --extra-ldflags=\"$LDFLAGS\" \ 
      --extra-cflags=-I$NDK_PATH/platforms/android-8/arch-arm/usr/include \ 

eval "$COMMON_CONFIG" 
if [ $? -ne 0 ]; then 
    exit 1 
fi 

은 내가 '메이크업'을 입력하면 math.h, ctime이 같은 (헤더 파일되는 경우, 컴파일러가 알고하지 않았기 때문에 (--extra-CFLAGS에 의해) 컴파일러에게 새로운 헤더 파일 경로를 제공해야합니다. h)

이 스크립트를 사용하여 구성하고 'make'를 입력하면이 오류가 발생합니다.

CC libavdevice/alldevices.o 
In file included from /Users/gyeongmingim/android-ndk-r8/platforms/android-8/arch-arm/usr/include/stdlib.h:42, 
      from ./libavutil/common.h:35, 
      from ./libavutil/avutil.h:126, 
      from libavdevice/avdevice.h:22, 
      from libavdevice/alldevices.c:22: 
/Users/gyeongmingim/android-ndk-r8/platforms/android-8/arch-arm/usr/include/strings.h:49: warning: redundant redeclaration of 'index' 
/Users/gyeongmingim/android-ndk-r8/platforms/android-8/arch-arm/usr/include/string.h:47: note: previous declaration of 'index' was here 
/Users/gyeongmingim/android-ndk-r8/platforms/android-8/arch-arm/usr/include/strings.h:50: warning: redundant redeclaration of 'strcasecmp' 
/Users/gyeongmingim/android-ndk-r8/platforms/android-8/arch-arm/usr/include/string.h:57: note: previous declaration of 'strcasecmp' was here 
/Users/gyeongmingim/android-ndk-r8/platforms/android-8/arch-arm/usr/include/strings.h:51: warning: redundant redeclaration of 'strncasecmp' 
/Users/gyeongmingim/android-ndk-r8/platforms/android-8/arch-arm/usr/include/string.h:58: note: previous declaration of 'strncasecmp' was here 
In file included from ./libavutil/internal.h:178, 
      from ./libavutil/common.h:342, 
      from ./libavutil/avutil.h:126, 
      from libavdevice/avdevice.h:22, 
      from libavdevice/alldevices.c:22: 
./libavutil/libm.h:62: error: static declaration of 'lrint' follows non-static declaration 
./libavutil/libm.h:69: error: static declaration of 'lrintf' follows non-static declaration 
./libavutil/libm.h:76: error: static declaration of 'round' follows non-static declaration 
./libavutil/libm.h:90: error: static declaration of 'trunc' follows non-static declaration 
make: *** [libavdevice/alldevices.o] Error 1 

무엇이 잘못입니까?
구성에 잘못된 정보가 있습니까? 또는 누락 된 플래그가 있습니까?

OS : 맥 사자
안드로이드 NDK 버전 : 안드로이드 NDK-R8

답변

3

나는 당신의 구성에 대해 잘 모르지만, 내가 (최신 버전) bambuser에서 스크립트를 사용하여는 FFmpeg 컴파일 할 수 있었다에서 Ubuntu (또는 Windows에서 Ubuntu를 실행하는 Oracle VM Virtual Box에서).

+0

다운로드하여 제대로 작동합니다. – manutd

1

내 Mac에서 FFmpeg를 컴파일하는 동안 동일한 문제가 발생했습니다. 해결 방법은

config.h (예, 구성에 의해 생성 됨)이며 모두 lrintfriends1으로 설정합니다. 예 : #define HAVE_LRINT 1

이렇게하면 빌드를 계속할 수 있습니다.

configure을 다시 실행하면 config.h을 다시 편집해야합니다.

관련 문제