2013-08-12 18 views
5

最近、Windows上でffmpegをコンパイルする際に多くの問題が発生しています。私は現在、コードを実行するためにcgywinターミナルを使用しています。私はウェブ上で最も人気のあるチュートリアルの多くをフォローしようとしましたが、うまく動作しないようです。cygwinを使用してWindows上でffmpegをコンパイルする際の問題

私は、その後のステップにこのの4-6に続く

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

bashスクリプトを作成しました:私は現在、私がでてるのガイドhttp://www.roman10.net/how-to-build-ffmpeg-for-android/

としてこのチュートリアルを使用しています私はこのような結果を得たcgywinでスクリプトを実行した

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 

で構成され、ポストDoes anyone find this useful? - Compiling FFMPEG on Windows with Cywin and NDK r5

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(ヘッダー)、config.mak、config.fateです。アンドロイドフォルダは決して作成されたように作成されません。私はlibrary.makのエラーがffmpegのダウンロードに付属していると考えることから来ているかどうかもわかりません。

私はこれがどこで間違っているのか分かりません。私は、Windowsを使用しているという事実が、このビルドプロセスを異なるものにしてくれると感じています。

+0

'library.mak'の行105を確認してください。おそらく行頭に 'TAB'文字がありません。 – devnull

+0

タブを追加しましたが、最初のターゲットの前に 'library.mak:105:*** recipe started'というエラーが発生しました。やめる。'何か案は? – Papajohn000

+0

これは同様の問題の答えです。http://stackoverflow.com/questions/11634318/makefile-missing-separator-on-cygwin –

答えて

1

「WARNING: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- and Win32-style pathsに関するドキュメント。

私の経験から、スラッシュとバックスラッシュを組み合わせたり、CygwinからWindowsネイティブコマンドを呼び出すときに問題があります。 Example:私の意見では

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 

しかし、多分私は間違っているcompletyを。私はあなたがすでに

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をチェックsuppposeとします。

+0

'ls 'c:/''はうまく動作します。 –

+0

@BenVoigt、そうです。私は 'c:/'とは異なる 'c:'でテストしました。おそらく悪い例でした。 私は主に "POSIXパスを使うのが良い"と答えるように修正しました。そして私は他の根本的原因を取り除きます... – mcoolive

関連する問題