使用cygwin编译Windows上的ffmpeg的问题

我最近在windows上编译ffmpeg时遇到了很多麻烦。 我正在使用cgywinterminal来运行代码。 我已经尝试了很多在networking上最stream行的教程,但我似乎无法得到它的工作。 我正在使用本教程作为指南http://www.roman10.net/how-to-build-ffmpeg-for-android/

我在哪里:

我创build了一个bash脚本

#!/bin/bash NDK=C:/Users/jrblain/Development/adt-bundle-windows-x86_64-20130514/android-ndk-r9 PLATFORM=$NDK/platforms/android-8/arch-arm/ PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.6/prebuilt/windows-x86_64 function build_one { ./configure --target-os=linux \ --prefix=$PREFIX \ --enable-cross-compile \ --extra-libs="-lgcc" \ --arch=arm \ --cc=$PREBUILT/bin/arm-linux-androideabi-gcc \ --cross-prefix=$PREBUILT/bin/arm-linux-androideabi- \ --nm=$PREBUILT/bin/arm-linux-androideabi-nm \ --sysroot=$PLATFORM \ --extra-cflags=" -O3 -fpic -DANDROID -DHAVE_SYS_UIO_H=1 -Dipv6mr_interface=ipv6mr_ifindex -fasm -Wno-psabi -fno-short-enums -fno-strict-aliasing -finline-limit=300 $OPTIMIZE_CFLAGS " \ --disable-shared \ --enable-static \ --extra-ldflags="-Wl,-rpath-link=$PLATFORM/usr/lib -L$PLATFORM/usr/lib -nostdlib -lc -lm -ldl -llog" \ --disable-everything \ --enable-demuxer=mov \ --enable-demuxer=h264 \ --disable-ffplay \ --enable-protocol=file \ --enable-avformat \ --enable-avcodec \ --enable-decoder=rawvideo \ --enable-decoder=mjpeg \ --enable-decoder=h263 \ --enable-decoder=mpeg4 \ --enable-decoder=h264 \ --enable-parser=h264 \ --disable-network \ --enable-zlib \ --disable-avfilter \ --disable-avdevice \ $ADDITIONAL_CONFIGURE_FLAG make clean make -j4 install $PREBUILT/bin/arm-linux-androideabi-ar d libavcodec/libavcodec.a inverse.o $PREBUILT/bin/arm-linux-androideabi-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/arm-linux-androideabi/4.4.3/libgcc.a } #arm v6 #CPU=armv6 #OPTIMIZE_CFLAGS="-marm -march=$CPU" #PREFIX=./android/$CPU #ADDITIONAL_CONFIGURE_FLAG= #build_one #arm v7vfpv3 CPU=armv7-a OPTIMIZE_CFLAGS="-mfloat-abi=softfp -mfpu=vfpv3-d16 -marm -march=$CPU " PREFIX=./android/$CPU ADDITIONAL_CONFIGURE_FLAG= build_one #arm v7vfp #CPU=armv7-a #OPTIMIZE_CFLAGS="-mfloat-abi=softfp -mfpu=vfp -marm -march=$CPU " #PREFIX=./android/$CPU-vfp #ADDITIONAL_CONFIGURE_FLAG= #build_one #arm v7n #CPU=armv7-a #OPTIMIZE_CFLAGS="-mfloat-abi=softfp -mfpu=neon -marm -march=$CPU -mtune=cortex-a8" #PREFIX=./android/$CPU #ADDITIONAL_CONFIGURE_FLAG=--enable-neon #build_one #arm v6+vfp #CPU=armv6 #OPTIMIZE_CFLAGS="-DCMP_HAVE_VFP -mfloat-abi=softfp -mfpu=vfp -marm -march=$CPU" #PREFIX=./android/${CPU}_vfp #ADDITIONAL_CONFIGURE_FLAG= #build_one 

然后我按照这个post的第4-6步有没有人觉得这有用? – 使用Cywin和NDK r5编译Windows上的FFMPEG

 4 - Open the file 'configure' in the root of the FFMPEG directory in a text editor. 5 - Comment out lines 2073, 2074 and 2075. 6 - Below 2075, add the following line: TMPDIR=c:/cygwin/tmp 

当我在cgywin中运行脚本时,我得到了这个结果:

  install prefix ./android/armv7-a source path . C compiler C:/Users/jrblain/Development/adt-bundle-windows-x86_64-20130514/android-ndk-r9/toolchains/arm-linux-androideabi-4.6/prebuilt/windows-x86_64/bin/arm-linux-androideabi-gcc ARCH arm (armv7-a) big-endian no runtime cpu detection yes ARMv5TE enabled yes ARMv6 enabled yes ARMv6T2 enabled yes VFP enabled yes NEON enabled yes THUMB enabled no debug symbols yes strip symbols yes optimize for size no optimizations yes static yes shared no postprocessing support no new filter support no network support no threading support pthreads safe bitstream reader yes SDL support no opencl enabled no texi2html enabled no perl enabled no pod2man enabled no makeinfo enabled no External libraries: zlib Enabled decoders: h263 mjpeg rawvideo h264 mpeg4 Enabled encoders: Enabled hwaccels: Enabled parsers: h263 h264 mpeg4video Enabled demuxers: h264 mov Enabled muxers: Enabled protocols: file Enabled filters: Enabled bsfs: Enabled indevs: Enabled outdevs: License: LGPL version 2.1 or later Creating config.mak, config.h, and doc/config.texi... libavutil/avconfig.h is unchanged WARNING: C:/Users/jrblain/Development/adt-bundle-windows-x86_64-20130514/android-ndk-r9/toolchains/arm-linux-androideabi-4.6/prebuilt/windows-x86_64/bin/arm-linux-androideabi-pkg-config not found, library detection may fail. library.mak:105: *** missing separator. Stop. library.mak:105: *** missing separator. Stop. C:\Users\jrblain\Development\adt-bundle-windows-x86_64-20130514\android-ndk-r9\toolchains\arm-linux-androideabi-4.6\prebuilt\windows-x86_64\bin\arm-linux-androideabi-ld.exe: ,noexecstack: unknown -z option C:\Users\jrblain\Development\adt-bundle-windows-x86_64-20130514\android-ndk-r9\toolchains\arm-linux-androideabi-4.6\prebuilt\windows-x86_64\bin\arm-linux-androideabi-ld.exe: use the --help option for usage information 

这个脚本运行后,我的ffmpeg文件夹中有一些新的文件。 它们是.config,config(header),config.mak,config.fate。 android文件夹从来没有像它应该创build。 我也不知道在哪里library.mak错误来自考虑它与ffmpeg下载。

我不确定这个我在哪里出错了。 我觉得我正在使用Windows的事实将使这个构build过程不同。

第一个错误说“警告:没有找到C:/…/ arm-linux-androideabi-pkg-config,库检测可能失败。 所以我建议修复路径。

'C:/'不是POSIX路径。 Cygwin程序能够翻译它(带有警告)。

 cd 'c:' # works. cd is a built-in command ls 'c:' # doesn't work ls 'c:/' # works (edited) 

关于Cygwin如何映射POSIX和Win32风格路径的文档。

根据我的经验,当你混合斜杠和反斜杠,或者从Cygwin调用Windows本地命令时,你会遇到问题。 例如 :

 javac -cp "$(cygpath -pw "$CLASSPATH")" hello.java 

在我看来,你应该硬编码一个POSIX路径,或者使用下面的命令:

 cygpath -u 'c:' # the relevant command provided by Cygwin (cd 'c:' && pwd) # a tip, useful if you want a portable syntax 

但也许我是完全错误的。 我想你已经检查了路径

 ls 'C:/Users/jrblain/Development/adt-bundle-windows-x86_64-20130514/android-ndk-r9/toolchains/arm-linux-androideabi-4.6/prebuilt/windows-x86_64/bin/arm-linux-androideabi-pkg-config' 

我假设你已经检查了你的mk文件(制表和Linux )的第105