在Windows OS for Android的Cygwin下构建FFMPEG

在Windows OS for Android的Cygwin下构建FFMPEG,android,linux,ffmpeg,android-ndk,cygwin,Android,Linux,Ffmpeg,Android Ndk,Cygwin,在过去的几天里,我一直在努力使用Cygwin在Windows操作系统上使用Android-ndk-14d为Android项目构建FFMPEG。 我已经学习了很多教程,在使用build_android.sh构建FFMPEG时遇到了很多错误 以下是我迄今为止采取的步骤 我下载了Cygwin并配置了构建FFMPEG所需的所有依赖项 我用文本编辑器打开了ffmpeg-3.3.1/configure文件,并更改为以下几行 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME

在过去的几天里,我一直在努力使用Cygwin在Windows操作系统上使用Android-ndk-14d为Android项目构建FFMPEG。 我已经学习了很多教程,在使用build_android.sh构建FFMPEG时遇到了很多错误

以下是我迄今为止采取的步骤

我下载了Cygwin并配置了构建FFMPEG所需的所有依赖项

我用文本编辑器打开了ffmpeg-3.3.1/configure文件,并更改为以下几行

SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
SLIB_INSTALL_LINKS='$(SLIBNAME)'
我的build_android.sh如下所示

#!/bin/bash
NDK=C:/~/ndk-bundle
SYSROOT=$NDK/platforms/android-21/arch-arm/
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-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=android \
    --arch=arm \
    --cpu=armv7-a \
    --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
我执行了这些命令

dos2unix build_android.sh 
chmod +x build_android.sh
./build_android.sh
并且,,,当前正在获取此错误

c:/users/sonic/appdata/local/android/sdk/ndk bundle/toolschains/arm-linux-androideabi-4.9/p 重建的/windows-x86_64/bin/./lib/gcc/arm-linux-androideabi/4.9.x/../../../../../../arm-linux-an droidabi/bin/ld.exe:错误:libavutil/libavutil.so:1:1:语法错误, 意外的“!”,预期$end

c:/users/sonic/appdata/local/android/sdk/ndk bundle/toolschains/arm-linux-androideabi-4.9/p 重建的/windows-x86_64/bin/./lib/gcc/arm-linux-androideabi/4.9.x/../../../../../../arm-linux-an droidabi/bin/ld.exe:错误:libavutil/libavutil.so:不是对象或 archive collect2.exe:错误:ld返回1退出状态 make:**[library.mak:94:libswscale/libswscale-4.so]错误1 LD

libswscale/libswscale-4.so c:/users/sonic/appdata/local/android/sdk/ndk bundle/toolschains/arm-linux-androideabi-4.9/p 重建的/windows-x86_64/bin/./lib/gcc/arm-linux-androideabi/4.9.x/../../../../../../arm-linux-an droidabi/bin/ld.exe:错误:libavutil/libavutil.so:1:1:语法错误, 意外的“!”,预期$end

c:/users/sonic/appdata/local/android/sdk/ndk bundle/toolschains/arm-linux-androideabi-4.9/p 重建的/windows-x86_64/bin/./lib/gcc/arm-linux->androideabi/4.9.x/../../../../../../arm-linux-an droidabi/bin/ld.exe:错误:libavutil/libavutil.so:不是对象或 archive collect2.exe:错误:ld返回了1个退出状态make:*** [library.mak:94:libswscale/libswscale-4.so]错误1

从上面链接的评论来看,似乎是这样 在Linux/Unix操作系统中更容易构建FFMPEG。我的第一个问题可能是个愚蠢的问题。但如果有人能指导我度过这一关,我将非常感激

如果我在Linux上为Android构建FFMPEG,我可能会复制或移动它们吗 结果输出(arm/lib文件夹包含共享库,而arm/include文件夹包含libavcodec、libavformat、libavfilter、libavutil、libswscale等的头文件)到Windows操作系统,并将其用于 我的Android项目

因为我的公司只为一个项目提供Windows操作系统,所以我必须在Windows操作系统上使用它们

感谢您抽出时间,如果您能提供任何反馈,肯定会有所帮助

作为参考,这里是我的config.log

结束c:/ffmpegtmp/ffconf.qoBF6X98.c C:/Users/sonic/AppData/Local/Android/sdk/ndk bundle/toolschains/arm-linux-androideabi-4.9/prebuild/windows-x86_64/bin/arm-linux-androideabi-gcc--sysroot=C:/Users/sonic/AppData/Local/Android/sdk/ndk bundle/platforms/Android-9/arch arm/

-isysroot C:/Users/sonic/AppData/Local/Android/sdk/ndk bundle/platforms/Android-9/arch-arm/ -D_ISOC99_SOURCE-D_FILE_OFFSET_BITS=64-D_LARGEFILE_SOURCE-dstrtd=avpriv_strotd-DPIC-Os-fpic-marm-march=armv7-a-std=c11-fomit frame pointer-fpic-marm-pthread-g-wdecaration after-Wall-Wdisabled optimization-Wpointer-arith-wredundantant decls-Wwrite strings-Wtype limits-Wundef-Wmissing原型-指向int cast的Wno指针-Wstrict prototype-Wempty body-Wno括号-Wno开关-Wno格式零长度-Wno指针符号-O3-fno数学错误-fno符号零-fno树向量化-Werror=格式安全性-Werror=隐式函数声明-Werror=缺少原型-Werror=返回类型-Werror=vla-Wformat-c-oc:/ffmpegtmp/ffconf.8joa74tC.o

c:/ffmpegtmp/ffconf.qoBF6X98.c 检查\u cflags-诊断颜色=自动测试\u cflags -fddiagnostics color=auto check_cc-fddiagnostics color=auto BEGIN c:/ffmpegtmp/ffconf.qoBF6X98.c 1 int x;END c:/ffmpegtmp/ffconf.qoBF6X98.c:/Users/sonic/AppData/Local/Android/sdk/ndk bundle/toolschains/arm-linux-androidabi-4.9/prebuild/windows-x86_64/bin/arm-linux-androidabi-gcc--sysroot=c:/Users/sonic/AppData/Local/Android/sdk/ndk bundle/platforms/Android-9/arch arm/

-isysroot C:/Users/sonic/AppData/Local/Android/sdk/ndk bundle/platforms/Android-9/arch-arm/ -D_ISOC99_SOURCE-D_FILE_OFFSET_BITS=64-D_LARGEFILE_SOURCE-dstrtd=avpriv_strotd-DPIC-Os-fpic-marm-march=armv7-a-std=c11-fomit frame pointer-fpic-marm-pthread-g-wdecaration after-Wall-Wdisabled optimization-Wpointer-arith-wredundantant decls-Wwrite strings-Wtype limits-Wundef-Wmissing原型-指向int cast的Wno指针-Wstrict prototype-Wempty body-Wno括号-Wno开关-Wno格式零长度-Wno指针符号-O3-fno数学错误-fno符号零-fno树向量化-Werror=格式安全性-Werror=隐式函数声明-Werror=缺少原型-Werror=返回类型-Werror=vla-Wformat-FDDiagnostics color=自动-c-oc:/ffmpegtmp/ffconf.8joa74tC.o c:/ffmpegtmp/ffconf.qoBF6X98.c测试\u cflags-Wmaybe未初始化检查\u cc-Wmaybe未初始化开始

c:/ffmpegtmp/ffconf.qoBF6X98.c 1 int x;END c:/ffmpegtmp/ffconf.qoBF6X98.c:/Users/sonic/AppData/Local/Android/sdk/ndk bundle/toolschains/arm-linux-androidabi-4.9/prebuild/windows-x86_64/bin/arm-linux-androidabi-gcc--sysroot=c:/Users/sonic/AppData/Local/Android/sdk/ndk bundle/platforms/Android-9/arch arm/

-isysroot C:/Users/sonic/AppData/Local/Android/sdk/ndk bundle/platforms/Android-9/arch-arm/ -D_ISOC99_源-D_文件_偏移量_位=64-D_大文件_源-dstrtd=avpriv_strtd-DPIC-Os-fpic-marm-march=