2011-11-22 13 views
5

Sono in esecuzione su Lion 64 bit ma ho bisogno di compilare una versione a 32 bit di ffmpeg perché un'altra libreria che sto utilizzando è disponibile solo come 32 bit. Ho provato diverse configurazioni, ma mi stanno dando errori. Ecco che cosa ho provato:Impossibile compilare i dylibs ffmpeg compatibili con i386 su Mac OS X

./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- compila

./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-s hared --disable-outdev = sdl --disable-bzlib --disable-libfreetype --disable-libopenjpeg --enable-zlib --enable-runtime-cpudetect --arch = x86_32

io o ottenere un errore "esaurito registri durante l'allocazione dei registri" durante i reclami make o gcc che la compilazione incrociata non è attiva.

risposta

11

Sono riuscito a farlo funzionare su ffmpeg build 08d2cee4 utilizzando clang anziché gcc. Quindi ecco la linea di configurazione che funzionava:

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

Grazie a Carl su utente libav!

Qui è stato il mio thread nel caso aiuta chiunque: http://ffmpeg.org/pipermail/libav-user/2011-December/001013.html

0

Ho intenzione di indovinare: è stato creato: libavcodec/h264_cabac.o?

Prova ad aggiungere . IIRC, c'è qualche assembly in gcc che non riesce a ottenere abbastanza registri. Questa opzione libera %ebp per l'uso come registro generale.

+0

è corretto, è sempre su 'libavcodec/h264_cabac.o'. Ho provato ad aggiungere '-fomit-frame-pointer' a' extra-cflags' e 'extra-ldflags', ma sto ancora ricevendo lo stesso errore. –

1

Si potrebbe provare a utilizzare il flag -m32 che indica a gcc di compilare solo per 32 bit.

+0

non c'è fortuna quando si aggiunge questo a 'extra-cflags' e' extra-ldflags' :-(. Stesso errore sull'esecuzione dei registri. –

+0

Ho seguito anche il consiglio su http://lists.mplayerhq.hu/pipermail/mplayer -users/2011-August/083095.html per aggiungere -cc = "gcc -m32" ma ha ottenuto lo stesso risultato –

+0

Oops, scusa per saltare quello che hai scritto sull'errore dei registri. Questo probabilmente non è correlato al flag a 32 bit, e per prima cosa dovrai capirlo. – Jerry

0

risolvo l'errore "a corto di registri durante l'allocazione registro" con --disable-asm

forse si potrebbe provare.