使用arm-linux-androideabi-gcc和android ndk编译对象的问题

时间:2014-09-21 09:13:02

标签: linux bash gcc android-ndk ffmpeg

我正在尝试使用android ndk r8b版本构建FFmpeg源文件。我的linux版本是CentOs 6.5。我正在按照此链接https://github.com/yixia/FFmpeg-Android执行此指令 这是我正在尝试执行的bash脚本

     #!/bin/bash

    DEST=`pwd`/build/ffmpeg && rm -rf $DEST
    SOURCE=`pwd`/ffmpeg

    if [ -d ffmpeg ]; then
      cd ffmpeg
    else
      git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg
      cd ffmpeg
    fi

    git reset --hard
    git clean -f -d
    git checkout `cat ../ffmpeg-version`
    patch -p1 <../FFmpeg-VPlayer.patch
    [ $PIPESTATUS == 0 ] || exit 1

    git log --pretty=format:%H -1 > ../ffmpeg-version

    TOOLCHAIN=/tmp/vplayer
    SYSROOT=$TOOLCHAIN/sysroot/
    $ANDROID_NDK/build/tools/make-standalone-toolchain.sh --platform=android-14 --install-     dir=$TOOLCHAIN

    export PATH=$TOOLCHAIN/bin:$PATH
    export CC=arm-linux-androideabi-gcc
    export LD=arm-linux-androideabi-ld
    export AR=arm-linux-androideabi-ar

    CFLAGS="-O3 -Wall -mthumb -pipe -fpic -fasm \
      -finline-limit=300 -ffast-math \
      -fstrict-aliasing -Werror=strict-aliasing \
      -fmodulo-sched -fmodulo-sched-allow-regmoves \
      -Wno-psabi -Wa,--noexecstack \
      -D__ARM_ARCH_5__ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5TE__ \
      -DANDROID -DNDEBUG"

    FFMPEG_FLAGS="--target-os=linux \
      --arch=arm \
      --enable-cross-compile \
      --cross-prefix=arm-linux-androideabi- \
      --enable-shared \
      --disable-symver \
      --disable-doc \
      --disable-ffplay \
      --disable-ffmpeg \
      --disable-ffprobe \
      --disable-ffserver \
      --disable-avdevice \
      --disable-avfilter \
      --disable-encoders \
      --disable-muxers \
      --disable-filters \
      --disable-devices \
      --disable-everything \
      --enable-protocols  \
      --enable-parsers \
      --enable-demuxers \
      --enable-decoders \
      --enable-bsfs \
      --enable-network \
      --enable-swscale  \
      --disable-demuxer=sbg \
      --disable-demuxer=dts \
      --disable-parser=dca \
      --disable-decoder=dca \
      --enable-asm \
      --enable-version3"


    for version in neon armv7 vfp armv6; do

      cd $SOURCE

      case $version in
        neon)
          EXTRA_CFLAGS="-march=armv7-a -mfpu=neon -mfloat-abi=softfp -mvectorize-with-neon-quad"
          EXTRA_LDFLAGS="-Wl,--fix-cortex-a8"
          ;;
        armv7)
          EXTRA_CFLAGS="-march=armv7-a -mfpu=vfpv3-d16 -mfloat-abi=softfp"
          EXTRA_LDFLAGS="-Wl,--fix-cortex-a8"
          ;;
        vfp)
          EXTRA_CFLAGS="-march=armv6 -mfpu=vfp -mfloat-abi=softfp"
          EXTRA_LDFLAGS=""
          ;;
        armv6)
          EXTRA_CFLAGS="-march=armv6"
          EXTRA_LDFLAGS=""
          ;;
        *)
          EXTRA_CFLAGS=""
          EXTRA_LDFLAGS=""
          ;;
      esac

      PREFIX="$DEST/$version" && mkdir -p $PREFIX
      FFMPEG_FLAGS="$FFMPEG_FLAGS --prefix=$PREFIX"

      ./configure $FFMPEG_FLAGS --extra-cflags="$CFLAGS $EXTRA_CFLAGS" --extra-     ldflags="$EXTRA_LDFLAGS" | tee $PREFIX/configuration.txt
      cp config.* $PREFIX
      [ $PIPESTATUS == 0 ] || exit 1

      make clean
      make -j4 || exit 1
      make install || exit 1

      rm libavcodec/inverse.o
      $CC -lm -lz -shared --sysroot=$SYSROOT -Wl,--no-undefined -Wl,-z,noexecstack $EXTRA_LDFLAGS libavutil/*.o libavutil/arm/*.o libavcodec/*.o libavcodec/arm/*.o libavformat/*.o libswresample/*.o libswscale/*.o -o $PREFIX/libffmpeg.so

      cp $PREFIX/libffmpeg.so $PREFIX/libffmpeg-debug.so
      arm-linux-androideabi-strip --strip-unneeded $PREFIX/libffmpeg.so

    done

现在我收到此错误./FFmpeg-Android.sh: line 26: export: arm-linux-androideabi-gcc':不是有效的标识符 arm-linux-androideabi-gcc无法创建可执行文件。 C编译器测试失败。

26号码中的代码是export CC=arm-linux-androideabi-gcc任何想法为什么会发生问题?我将不胜感激。

1 个答案:

答案 0 :(得分:0)

你能分享configuration.txt文件的内容吗?错误将更明确。

NDK r8b已经很老了,从那时起就修复了很多错误,你可能想把它升级到像r9d或r10b这样的更新版本。

无论如何,您使用的脚本已经过时,您可以试试这个: https://github.com/android-native-libraries/FFmpeg-Android 这是更新的。