title: Compiling ffmpeg for use in Android (ndk) for x86 architecture
body: <p>I am trying to compile ffmpeg for Android but for the x86 architecture. I've successfully compiled an arm .so and it all works, and I though that by replacing arm with x86 in the relevant places within the build script would have done the trick. Unfortunately that's not the case and I get some strange things occurring.</p>
  
  <p>First I get this while it's compiling ffmpeg:</p>
  
  <pre><code>/home/ankur/android-ndk-r8/platforms/android-8/arch-arm//usr/include/strings.h:49: warning: redundant redeclaration of 'index'
  </code></pre>
  
  <p>Notice the arch-arm instead of arch-x86. Finally I get this:</p>
  
  <pre><code>/home/ankur/android-ndk-r8/toolchains/x86-4.4.3/prebuilt/linux-x86/bin/i686-android-linux-ld: libavcodec/libavcodec.a(4xm.o): Relocations in generic ELF (EM: 40)
  /home/ankur/android-ndk-r8/toolchains/x86-4.4.3/prebuilt/linux-x86/bin/i686-android-linux-ld: libavcodec/libavcodec.a(4xm.o): Relocations in generic ELF (EM: 40)
  /home/ankur/android-ndk-r8/toolchains/x86-4.4.3/prebuilt/linux-x86/bin/i686-android-linux-ld: libavcodec/libavcodec.a(4xm.o): Relocations in generic ELF (EM: 40)
  libavcodec/libavcodec.a(4xm.o): could not read symbols: File in wrong format
  </code></pre>
  
  <p>The build script I've created looks like this:</p>
  
  <pre><code>#!/bin/bash
  
  NDK=~/android-ndk-r8
  PLATFORM=$NDK/platforms/android-8/arch-x86/
  PREBUILT=$NDK/toolchains/x86-4.4.3/prebuilt/linux-x86
  function build_one_r8
  {
  ./configure \
      --disable-shared \
      --enable-static \
      --enable-gpl \
      --enable-version3 \
      --enable-nonfree \
      --disable-doc \
      --disable-ffmpeg \
      --disable-ffplay \
      --disable-ffprobe \
      --disable-ffserver \
      --disable-avdevice \
      --disable-avfilter \
      --disable-postproc \
      --enable-small \
      --cross-prefix=$PREBUILT/bin/i686-android-linux- \
      --enable-cross-compile \
      --target-os=linux \
      --extra-cflags="-I$PLATFORM/usr/include" \
      --arch=x86 \
      --disable-symver \
      --disable-debug \
      --disable-stripping \
      $ADDITIONAL_CONFIGURE_FLAG
  sed -i 's/HAVE_LRINT 0/HAVE_LRINT 1/g' config.h
  sed -i 's/HAVE_LRINTF 0/HAVE_LRINTF 1/g' config.h
  sed -i 's/HAVE_ROUND 0/HAVE_ROUND 1/g' config.h
  sed -i 's/HAVE_ROUNDF 0/HAVE_ROUNDF 1/g' config.h
  sed -i 's/HAVE_TRUNC 0/HAVE_TRUNC 1/g' config.h
  sed -i 's/HAVE_TRUNCF 0/HAVE_TRUNCF 1/g' config.h
  make clean
  make  -j4 install
  $PREBUILT/bin/i686-android-linux-ar d libavcodec/libavcodec.a inverse.o
  $PREBUILT/bin/i686-android-linux-ld -rpath-link=$PLATFORM/usr/lib -L$PLATFORM/usr/lib  -soname libffmpeg.so -shared -nostdlib  -z,noexecstack -Bsymbolic --whole-archive --no-undefined -o $PREFIX/libffmpeg.so libavcodec/libavcodec.a libavformat/libavformat.a libavutil/libavutil.a libswscale/libswscale.a -lc -lm -lz -ldl -llog  --warn-once  --dynamic-linker=/system/bin/linker $PREBUILT/lib/gcc/i686-android-linux/4.4.3/libgcc.a
  }
  function build_one_r8_2
  {
  $PREBUILT/bin/i686-android-linux-ar d libavcodec/libavcodec.a inverse.o
  $PREBUILT/bin/i686-android-linux-ld -rpath-link=$PLATFORM/usr/lib -L$PLATFORM/usr/lib  -soname libffmpeg.so -shared -nostdlib  -z,noexecstack -Bsymbolic --whole-archive --no-undefined -o $PREFIX/libffmpeg.so libavcodec/libavcodec.a libavformat/libavformat.a libavutil/libavutil.a libswscale/libswscale.a -lc -lm -lz -ldl -llog  --warn-once  --dynamic-linker=/system/bin/linker $PREBUILT/lib/gcc/i686-android-linux/4.4.3/libgcc.a
  }
  #x86
  CPU=x86
  OPTIMIZE_CFLAGS="-march=$CPU "
  PREFIX=./android/$CPU
  ADDITIONAL_CONFIGURE_FLAG=
  build_one_r8
  </code></pre>
  
  <p>I hope I'm doing something wrong rather than this not being possible.</p>
  
  <p>Thanks!</p>