我是Mac用户。我跟着这个教程:http://www.roman10.net/how-to-build-ffmpeg-with-ndk-r9/打造FFmpeg的为Android NDK使用构建Android的FFMpeg NDK给我.a而不是.so文件
我使用FFmpeg的2.1和NDK R9。
这是我build_android.sh
文件在我FFMepg文件夹这是在我的$NDK/sources
文件夹:
#!/bin/bash
NDK=$HOME/Desktop/adt/android-ndk
SYSROOT=$NDK/platforms/android-8/arch-arm/
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/darwin-x86_64
function build_one
{
./configure \
--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- \
--target-os=linux \
--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=arm
PREFIX=$(pwd)/android/$CPU
ADDI_CFLAGS="-marm"
build_one
Evrything是编译好的,但最后我得到.a
文件,而在本教程中,我应该得到.so
文件。
我做了什么错?唯一的变化就是:
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/darwin-x86_64
是:
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64
教程
。
谢谢你的回答。执行最后2个命令时出现以下错误:/path/to/ndk/toolchains/arm-linux-androideabi-4.8/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-ld:,noexecstack:unknown - z选项 /path/to/ndk/toolchains/arm-linux-androideabi-4.8/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-ld:使用--help选项获取使用信息 –
使用'path /到/ ndk/toolchains/arm-linux-androideabi-4.8/prebuilt/darwin-x86_64/bin/arm -linux-androideabi -ld --help。检查'-z,noexecstack'。如果它不在那里,请尝试删除它。其实我建立在linux-32bit ubunthu上。我没有在任何达尔文机器上工作。如果你使用的是darwin-32bit操作系统,建议你使用ndk 32位版本。因为在我的linux-32bit操作系统上使用32位+ 64位ndk会导致很多错误,这些错误可以在使用32位构建的ndk时解决 – nmxprime