运行./configure时在Windows上编译FFmpeg错误

Posted

技术标签:

【中文标题】运行./configure时在Windows上编译FFmpeg错误【英文标题】:compile FFmpeg error on windows when run ./configure 【发布时间】:2012-04-11 05:50:05 【问题描述】:

我想用FFmpeg在android上解码mp3和acc,我用的是android-ndk-r7和最新的cygwin。

我写了一个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,做bash打开cygwin shell,然后做./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.

不知道是怎么回事,有没有人知道怎么回事,谢谢。

【问题讨论】:

【参考方案1】:

确保您在 cygwin 中正确设置了 gcc 的路径。您是否尝试交叉编译ffmpeg。在这种情况下,请确保您的路径中没有定义 gcc 的交叉编译版本。 ffmpeg 的许多模块不能在 cygwin 中编译。检查 cygwin 架构是否兼容。检查--arch and --os. 下可用的选项

【讨论】:

感谢您的建议,我想可能是 ffmpeg 版本无法在 cygwin 上运行。我按照另一个示例在 linux 上完成它。这是网址,roman10.net/how-to-build-ffmpeg-for-android。【参考方案2】:

您可以在这里找到问题的解决方案: http://thompsonng.blogspot.co.il/2010/06/ffmpeg-compiling-with-cygwin-window.html

【讨论】:

以上是关于运行./configure时在Windows上编译FFmpeg错误的主要内容,如果未能解决你的问题,请参考以下文章

windows上编译freeglut库

在 Windows 上编译静态 Qt 构建时未定义的引用

如何在 Windows 上编译 64 位版本的 ffmpeg?

mingw 不会在我的 Windows10 上编译 libnet

我可以在一个版本的 Windows 上编译 C 程序,然后在另一个版本的 Windows 上运行它吗?

在 Windows 上编译的 Matlab 应用程序是不是可以在 Linux 下运行?