android ndk支持x86,编译用于x86架构的Android(ndk)中的ffmpeg

我正在尝试编译适用于Android的ffmpeg,但是适用于x86架构。我已经成功编译了一个arm .so,并且它一切正常,而且我认为通过在构建脚本内的相关位置用x86替换arm可能会取得成效。不幸的是,情况并非如此,我发生了一些奇怪的事情。编译用于x86架构的Android(ndk)中的ffmpeg

首先,我得到这个,而它的编译的ffmpeg:

/home/ankur/android-ndk-r8/platforms/android-8/arch-arm//usr/include/strings.h:49: warning: redundant redeclaration of 'index'

通知拱臂代替拱86。最后,我得到这样的:

/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

我创建看起来像这样的构建脚本:

#!/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

我希望我做错了什么,而不是这不是可能的。

谢谢!

2012-05-26

Ankur22

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值