在运行时在Windows上编译FFmpeg错误./configure
问题描述:
我想使用FFmpeg解码mp3和acc,在android上使用android-ndk-r7和最新的cygwin。在运行时在Windows上编译FFmpeg错误./configure
我写了一个shell config.sh,其内容是:
TMPDIR=/cygdrive/c/temp
PREBUILT=/cygdrive/c/android-ndk-r7/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows
PLATFORM=/cygdrive/c/android-ndk-r7/platforms/android-8/arch-arm
./configure --target-os=linux --arch=arm --enable-version3 --enable-gpl --enable-nonfree --disable-stripping --disable-ffmpeg --disable-ffplay --disable-ffserver --disable-ffprobe --disable-encoders --disable-muxers --disable-devices --disable-protocols --enable-protocol=file --enable-avfilter --disable-network --disable-mpegaudio-hp --disable-avdevice --enable-cross-compile --cc=$PREBUILT/bin/arm-linux-androideabi-gcc --cross-prefix=$PREBUILT/bin/arm-linux-androideabi- --nm=$PREBUILT/bin/arm-linux-androideabi-nm --extra-cflags="-fPIC -DANDROID" --disable-asm --enable-neon --enable-armv5te --extra-ldflags="-Wl,-T,$PREBUILT/arm-eabi/lib/ldscripts/armelf_linux_eabi.x -Wl,-rpath-link=$PLATFORM/usr/lib -L$PLATFORM/usr/lib -nostdlib $PREBUILT/lib/gcc/arm-linux-androideabi/4.4.3/crtbegin.o $PREBUILT/lib/gcc/arm-linux-androideabi/4.4.3/crtend.o -lc -lm -ldl"
我打开cmd并做庆典打开cygwin外壳,然后执行./config中,问题出现: “/cygdrive/c/android-ndk-r7/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows/bin/arm-linux-androideabi-gcc无法创建可执行文件...”
config.log是:
check_ld
check_cc
BEGIN /cygdrive/c/temp/ffconf.SFJc3t92.c
1 int main(void){ return 0; }
END /cygdrive/c/temp/ffconf.SFJc3t92.c
gcc -fPIC -DANDROID -std=c99 -c -o /cygdrive/c/temp/ffconf.YKRv5TSp.o /cygdrive/c/temp/ffconf.SFJc3t92.c
/cygdrive/c/temp/ffconf.SFJc3t92.c:1:0: warning: -fPIC ignored for target (all code is position independent)
gcc -Wl,-rpath-link=/cygdrive/c/android-ndk-r7/platforms/android-4/arch-arm/usr/lib -L/cygdrive/c/android-ndk-r7/platforms/android-4/arch-arm/usr/lib -nostdlib /cygdrive/c/android-ndk-r7/platforms/android-4/arch-arm/usr/lib/crtbegin_static.o /cygdrive/c/android-ndk-r7/platforms/android-4/arch-arm/usr/lib/crtend_android.o -lc -lm -ldl -o /cygdrive/c/temp/ffconf.Yf1Ftjmo /cygdrive/c/temp/ffconf.YKRv5TSp.o
/usr/lib/gcc/i686-pc-cygwin/4.5.3/../../../../i686-pc-cygwin/bin/ld: /cygdrive/c/android-ndk-r7/platforms/android-4/arch-arm/usr/lib/crtbegin_static.o: Relocations in generic ELF (EM: 40)
/cygdrive/c/android-ndk-r7/platforms/android-4/arch-arm/usr/lib/crtbegin_static.o: could not read symbols: File in wrong format
collect2: ld returned 1 exit status
C compiler test failed.
我不知道发生了什么,有人知道发生了什么,谢谢。
答
确保你已经在cygwin中正确设置了gcc的路径。你想交叉编译ffmpeg吗?在这种情况下,请确保您没有在路径中定义的交叉编译版本的gcc。 ffmpeg的许多模块不能在cygwin中编译。检查cygwin架构是否兼容。检查下--arch and --os.
答
可用选项在这里你可以找到解决问题的方法: http://thompsonng.blogspot.co.il/2010/06/ffmpeg-compiling-with-cygwin-window.html
感谢您发表评论。 – user1325717 2012-04-12 08:13:43
感谢您的建议,我thinki也许ffmpeg版本无法在cygwin上运行。我遵循另一个例子在linux上完成它。这里的网址是http://www.roman10.net/how-to-build-ffmpeg-for-android/。 – user1325717 2012-04-13 02:36:01