我正在运行64位Lion,但我需要编译一个32位版本的ffmpeg,因为我使用的另一个库只能用作32位。我尝试了许多不同的配置,但它们都给了我错误。这是我尝试过的:
./ configure --disable-static --enable-shared --disable-outdev = sdl --disable-bzlib --disable-libfreetype --disable-libopenjpeg --enable-zlib --enable-runtime-cpudetect --arch = i386 --extra-cflags =“ - arch i386” - extra-ldflags =“ - arch i386”--target-os = darwin --enable-cross-compile
./ configure --disable-static --enable-shared --disable-outdev = sdl --disable-bzlib --disable-libfreetype --disable-libopenjpeg --enable-zlib --enable-runtime-cpudetect --arch = i386 --extra-cflags =“ - arch i386” - extra-ldflags =“ - arch i386”
./ configure --disable-static --enable-shared --disable-outdev = sdl --disable-bzlib --disable-libfreetype --disable-libopenjpeg --enable-zlib --enable-runtime-cpudetect --arch = x86_32
我或者在make期间遇到“寄存器分配期间寄存器用完”错误或者gcc抱怨交叉编译没有激活。
答案 0 :(得分:11)
我能够通过使用clang而不是gcc来使用ffmpeg build 08d2cee4。所以这里有配置线工作:
./configure --disable-static --enable-shared --disable-outdev=sdl --enable-runtime-cpudetect --disable-bzlib --disable-libfreetype --disable-libopenjpeg --enable-zlib --cc="clang -m32"
感谢Carl on libav-user!
以下是我的帖子以防万一:http://ffmpeg.org/pipermail/libav-user/2011-December/001013.html
答案 1 :(得分:1)
您可以尝试使用-m32标志,该标志告诉gcc仅编译为32位。
答案 2 :(得分:0)
我会猜测 - 是建筑物:libavcodec/h264_cabac.o
?
尝试添加-fomit-frame-pointer
。 IIRC,有一些gcc内联汇编无法获得足够的寄存器。此选项释放%ebp
以用作通用寄存器。
答案 3 :(得分:0)
我使用--disable-asm
解决了“寄存器分配期间寄存器耗尽”的错误也许你可以尝试一下。