FFmpeg compile for Android (configure, make)
android, android-ndk, ffmpeg
Solution
I don't know about your configuration, but I was able to compile FFMPEg using the script from bambuser (latest version) under Ubuntu (or under Oracle VM Virtual Box running Ubuntu under Windows).
Problem
I want to compile ffmpeg for Android ver. But everytime I try, I can't compile the source of ffmpeg. I think my configuration option may be invalid. I used this script for configure. ``` #!/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 ``` I have to give compiler a new header file path (by --extra-cflags) because when I typed 'make', compiler didn't know where are header files (like math.h, ctime.h) After configure using this scripts and type 'make', I got these error. ``` 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 ``` What is the wrong? Does my configuration have wrong info? or any missing flag? OS : Mac Lion Android-ndk ver : android-ndk-r8