2011-11-22 17 views
5

पर i386 संगत ffmpeg dylibs को संकलित करने में असमर्थ मैं 64-बिट शेर चला रहा हूं लेकिन मुझे ffmpeg का 32-बिट संस्करण संकलित करने की आवश्यकता है क्योंकि मैं जिस दूसरी लाइब्रेरी का उपयोग कर रहा हूं वह केवल 32-बिट के रूप में उपलब्ध है। मैंने कई अलग-अलग कॉन्फ़िगरेशन की कोशिश की है लेकिन वे सभी मुझे त्रुटियां दे रहे हैं। यहाँ मैं क्या करने की कोशिश की है या नहीं:मैक ओएस एक्स

कॉन्फ़िगर --disable स्थैतिक --enable-साझा --disable-outdev = एसडीएल --disable-bzlib --disable-libfreetype --disable-libopenjpeg - सक्षम-zlib --enable-runtime-cpudetect --arch = i386 --extra-cflags = "- arch i386" --extra-ldflags = "- arch i386" --target-os = darwin --enable-cross- संकलित

./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 = एसडीएल --disable-bzlib --disable-libfreetype --disable-libopenjpeg --enable-zlib --enable-क्रम-cpudetect --arch = x86_32

मैं या तो मिलता है एक "पंजीकरण आवंटन के दौरान रजिस्टरों से बाहर चला गया" त्रुटि या जीसीसी के दौरान त्रुटि शिकायत करती है कि क्रॉस-कंपाइल सक्रिय नहीं है।

उत्तर

11

मैं इसे gcc के बजाय clang का उपयोग करके 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" 

libav-user पर कार्ल के लिए धन्यवाद!

यहाँ मामले में मेरी धागा था यह किसी को भी मदद करता है: हो सकता है आप यह कोशिश कर सकते http://ffmpeg.org/pipermail/libav-user/2011-December/001013.html

0

मैं जंगली अनुमान लगाने जा रहा हूं - क्या यह इमारत थी: libavcodec/h264_cabac.o?

जोड़ने का प्रयास करें। आईआईआरसी, कुछ जीसीसी इनलाइन असेंबली है जो पर्याप्त रजिस्टरों को पकड़ नहीं सकती है। यह विकल्प सामान्य प्रयोजन रजिस्टर के रूप में उपयोग के लिए %ebp को मुक्त करता है।

+0

यह सही है, यह हमेशा 'libavcodec/h264_cabac.o' पर है। मैंने '-फॉइट-फ्रेम-पॉइंटर' को 'अतिरिक्त-सीएफएलएजीए' और' अतिरिक्त-एलडीएफएलएजी 'में जोड़ने का प्रयास किया लेकिन मुझे अभी भी एक ही त्रुटि मिल रही है। –

1

आप -m32 ध्वज का उपयोग करने का प्रयास कर सकते हैं जो जीसीसी को केवल 32-बिट के लिए संकलित करने के लिए कहता है।

+0

'अतिरिक्त-सीएफएलएजी' और' अतिरिक्त-एलडीफ्लैग 'में जोड़ने के लिए कोई भाग्य नहीं :-(रजिस्टरों से बाहर निकलने के बारे में एक ही त्रुटि। –

+0

मैंने http://lists.mplayerhq.hu/pipermail/mplayer पर भी सलाह दी -users/2011-अगस्त/083095.html जोड़ने के लिए -cc = "gcc-m32" लेकिन एक ही परिणाम –

+0

ओह, मुझे खेद है कि मैंने रजिस्ट्रार त्रुटि के बारे में जो लिखा है उस पर छोड़ दिया है। यह शायद 32 बिट ध्वज से असंबंधित है, और आपको पहले इसे बाहर निकालना होगा। – Jerry

0

मैं त्रुटि को हल --disable-एएसएम

के साथ "रजिस्टर आवंटन के दौरान रजिस्टरों से बाहर भाग"।