Невозможно скомпилировать i386-совместимые dylibs ffmpeg в Mac OS X - PullRequest
5 голосов
/ 22 ноября 2011

Я использую 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

1010* Я либо получаю ошибку "закончились регистры во время выделения регистров" во время make, либо gcc жалуется, что кросс-компиляция не активна.

Ответы [ 4 ]

11 голосов
/ 09 декабря 2011

Я смог заставить это работать на ffmpeg build 08d2cee4, используя clang вместо gcc.Итак, вот строка конфигурации, которая сработала:

./configure --disable-static --enable-shared --disable-outdev=sdl --enable-runtime-cpudetect --disable-bzlib --disable-libfreetype --disable-libopenjpeg --enable-zlib --cc="clang -m32"

Спасибо Карлу за libav-user!

Вот моя ветка на случай, если она кому-нибудь поможет: http://ffmpeg.org/pipermail/libav-user/2011-December/001013.html

1 голос
/ 22 ноября 2011

Вы можете попробовать использовать флаг -m32, который указывает gcc компилировать только для 32-битных систем.

0 голосов
/ 09 мая 2013

я исправляю ошибку "закончились регистры во время распределения регистров" с помощью --disable-asm

Может быть, вы могли бы попробовать это.

0 голосов
/ 22 ноября 2011

Я собираюсь сделать дикое предположение - это было здание: libavcodec/h264_cabac.o?

Попробуйте добавить -fomit-frame-pointer. IIRC, есть некоторая встроенная сборка gcc, которая не может получить достаточно регистров. Эта опция освобождает %ebp для использования в качестве регистра общего назначения.

...