我跟着这个: roman10's android ndk r9d - ffmpeg tutorial 我能够运行build_android.sh脚本..但它没有在我的source / ffmpeg文件夹中创建'android'文件夹! 我该怎么办? Plz帮助我。
另一个疑问:该.sh文件中的'arm'应该根据机器env改变?如果是这种情况,你可以指导我们x86 ???
我的build_android.sh文件:
#!/bin/bash
NDK=/home/NDK/android-ndk-r9d
SYSROOT=$NDK/platforms/android-19/arch-arm/
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-arm
function build_one
{
sudo ./configure \
--target-os=linux \
--prefix=$PREFIX \
--enable-shared \
--disable-static \
--disable-doc \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--disable-avdevice \
--disable-doc \
--disable-symver \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--arch=arm \
--enable-cross-compile \
--sysroot=$SYSROOT \
--extra-cflags="-Os -fpic $ADDI_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS" \
$ADDITIONAL_CONFIGURE_FLAG
make clean
make
make install
}
CPU=i686
PREFIX=$(pwd)/android/$CPU
ADDI_CFLAGS="-marm"
build_one
我正在使用Ndk r10,ffmpeg 2.5.4,ubuntu x86。
谢谢您的时间。
PALAK。
答案 0 :(得分:1)
以下是我为x86
和arm
构建的脚本。似乎我使用的是与您尝试使用相同的脚本作为基础。如果您只需要x86,请注释脚本底部的第一个build_one
。
它在Mac上使用NDK r10进行了测试,但也应该在Ubuntu上进行测试。
#!/bin/bash
NDK_PLATFORM_LEVEL=9
NDK_COMPILER_VERSION=4.8
NDK_ABI=arm
# Android now has 64-bit and 32-bit versions of the NDK for GNU/Linux. We
# assume that the build platform uses the appropriate version, otherwise the
# user building this will have to manually set NDK_PROCESSOR or NDK_TOOLCHAIN.
if [ $(uname -m) = "x86_64" ]; then
NDK_PROCESSOR=x86_64
else
NDK_PROCESSOR=x86
fi
NDK_UNAME=`uname -s | tr '[A-Z]' '[a-z]'`
NDK=$ANDROID_NDK_ROOT
function build_one
{
if [ $NDK_ABI = "x86" ]; then
HOST=i686-linux-android
NDK_TOOLCHAIN=$NDK_ABI-$NDK_COMPILER_VERSION
else
HOST=$NDK_ABI-linux-androideabi
NDK_TOOLCHAIN=$HOST-$NDK_COMPILER_VERSION
fi
SYSROOT=$NDK/platforms/android-$NDK_PLATFORM_LEVEL/arch-$NDK_ABI/
TOOLCHAIN=$NDK/toolchains/$NDK_TOOLCHAIN/prebuilt/$NDK_UNAME-$NDK_PROCESSOR
echo sysroot=$SYSROOT
echo prefix=$PREFIX
make distclean > /dev/null 2>&1
./configure \
--prefix=$PREFIX \
--enable-shared \
--disable-debug \
--disable-stripping \
--disable-static \
--disable-doc \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--disable-avdevice \
--disable-doc \
--disable-symver \
--cross-prefix=$TOOLCHAIN/bin/$HOST- \
--target-os=linux \
--arch=arm \
--enable-cross-compile \
--sysroot=$SYSROOT \
--enable-pic \
--extra-cflags="-Os -fpic $ADDI_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS" \
$ADDITIONAL_CONFIGURE_FLAG
make clean
make -j16
make install
}
CPU=arm
PREFIX=$(pwd)/android/$CPU
ADDI_CFLAGS="-marm"
ADDITIONAL_CONFIGURE_FLAG="--cpu=cortex-a8"
build_one
NDK_ABI=x86
CPU=i686
PREFIX=$(pwd)/android/x86
ADDI_CFLAGS="-pipe -march=atom -msse3 -ffast-math -mfpmath=sse"
ADDI_LDFLAGS="-lm -lz -Wl,--no-undefined -Wl,-z,noexecstack"
ADDITIONAL_CONFIGURE_FLAG="--arch=x86 --cpu=i686"
build_one
我还用configure
替换了以SLIBNAME
开头的行。该教程还提到了这一点。
SLIBNAME='$(SLIBPREF)$(FULLNAME)$(SLIBSUF)'
SLIBNAME_WITH_VERSION='$(SLIBNAME)'
SLIBNAME_WITH_MAJOR='$(SLIBNAME)'
LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
SLIB_INSTALL_NAME='$(SLIBNAME)'
SLIB_INSTALL_LINKS=