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