使用cygwin在Windows上编译ffmpeg时出现问题 [英] Problems compiling ffmpeg on windows using cygwin

查看:114
本文介绍了使用cygwin在Windows上编译ffmpeg时出现问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

最近在Windows上编译ffmpeg时遇到了很多麻烦.我目前正在使用cgywin终端来运行代码.我曾尝试遵循网络上许多最受欢迎的教程,但似乎无法使其正常工作.我目前正在使用本教程作为指南 http://www .roman10.net/how-to-build-ffmpeg-for-android/

I've been having a lot of trouble recently compiling ffmpeg on windows. I'm currently using the cgywin terminal to run the code. I've tried following many of the most popular tutorials on the web but I can't seem to get it to work. I'm currently using this tutorial as a guide http://www.roman10.net/how-to-build-ffmpeg-for-android/

我在的位置:

我已经创建了一个bash脚本

I've created a bash script

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

然后,我按照这篇文章的步骤4-6

I then followed steps 4-6 of this post Does anyone find this useful? - Compiling FFMPEG on Windows with Cywin and NDK r5 which consists of

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中运行脚本时,得到了以下结果:

When I ran the script in cgywin I got this result:

    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文件夹永远不会像预期的那样创建.我还不确定ffmpeg下载是否附带该库,从而导致library.mak错误从何而来.

After this script runs I get some new files within my ffmpeg folder. They are .config, config(header), config.mak , config.fate. The android folder is never created like it is supposed to. I'm also not sure where the library.mak error is coming from considering that it came with ffmpeg download.

我不确定这是哪里出了错.我觉得我使用Windows的事实会使此构建过程有所不同.

I'm not sure where this i'm going wrong in all of this. I feel like the fact that I'm using windows will make this build process different.

推荐答案

第一个错误是警告:C:/.../arm-linux-androideabi-pkg-config未找到,库检测可能失败."因此,我建议解决此问题.

The first error say "WARNING: C:/.../arm-linux-androideabi-pkg-config not found, library detection may fail." So I suggest to fix the path.

'C:/'不是POSIX路径. Cygwin程序可以翻译它(带有警告).

'C:/' is not a POSIX path. Cygwin programs are able to translate it (with a warning).

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

有关Cygwin如何映射 POSIX和Win32样式路径的文档.

The documentation about how the Cygwin maps POSIX- and Win32-style paths.

根据我的经验,当您混合使用斜杠和反斜杠或从Cygwin调用Windows本机命令时,您会遇到问题. 示例:

From my experience you have issue when you mix slashs and back-slashs or when you call Windows native command from Cygwin. Example:

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

我认为,您应该对POSIX路径进行硬编码,或使用以下命令:

In my opinion, you should hardcode a POSIX path, or use the following command:

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

但是也许我完全错了.我想您已经检查了路径

But maybe I am complety wrong. I suppose you already check the path

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文件的第105行(制表符和linux 换行符).

And I supppose you already check the line 105 of your mk file (tabulation and linux line feed).

这篇关于使用cygwin在Windows上编译ffmpeg时出现问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆