2016-04-26 12 views
0

Ich versuche FFMPEG zu Kali Linux 2.0 Bisher zu installieren Ich habe versucht, die folgenden Befehle zu verwenden:compilieren FFMPEG für Kali Linux 2

git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg 
cd ffmpeg 
./configure 
make 
make install 

aber wenn ich versuche, und machen es ich die folgenden Fehler:

Screenshot

libavcodec/x86/imdct36.asm:393: error: operation size not specified 
library.mak:30: recipe for target 'libavcodec/x86/imdct36.o' failed 
make: *** [libavcodec/x86/imdct36.o] Error 1 

ich bin wirklich ratlos, wie man dieses Problem zu beheben, wie meine Fähigkeiten nur mäßig ...

sind
+2

Ihr Screenshot ist unleserlich und es sah schlechte Form auf S.O. um solche Elemente einzuschließen, wenn ein einfaches Kopieren/Einfügen von Ihrem Terminal in Ihr Q für etwas gemacht wird, das lesbar und durchsuchbar ist (Experten suchen nach bestimmten Phrasen und verwenden die Suchfunktion ihres Browsers). Bitte bearbeiten Sie Q mit Klartext Ihres Problems, verwenden Sie das '{}' - Werkzeug oben links im Bearbeitungsfeld auf hervorgehobenen Text, um die richtige Formatierung für Code/Daten/errMsgs/etc. Viel Glück. – shellter

+0

Danke, ich hoffe, jetzt ist es akzeptabel. – NeMesiS

+2

Die dupe Flagge in dieser Frage ist sehr irreführend. – MetaFight

Antwort

2

stieß ich auf die Antwort nur durch Zufall, aber ich brauchte YASM vor dem Kompilieren ...

apt-get install yasm 
+2

Das configure-Skript testet auf das Vorhandensein von yasm, und wenn es nicht da ist, aber nasm ist, wird es die Makefiles setzen, nasm zu verwenden. aber die Assemblersprache ist offensichtlich nicht akzeptabel für Nasm. –

0

dieses besondere Problem nahm viel aufzuspüren, aufgrund der großen Anzahl von Makros in der Installation Quelle. Linie 393 lautet:

DEFINE_IMDCT 

und für das Makro suchen, können wir es in Zeile 179. finden, aber es zahlreiche Anleitungen in ihm, und conditionals hat, und jeder von denen, könnte die Ursache sein. also zuerst, was wir tun, ist make V=1 zu verbose (normal) GNU make Ausgang zu aktivieren. dann sehen wir:

[email protected]:~/rentacoder/jcomeau/floureon/ffmpeg$ nasm -l /tmp/imdct36.lst -f elf -DPIC -g -F dwarf -I./ -I.// -Pconfig.asm -I libavcodec/x86/ -o libavcodec/x86/imdct36.o libavcodec/x86/imdct36.asm

erhalten eine Auflistung Datei:

[email protected]:~/rentacoder/jcomeau/floureon/ffmpeg$ nasm -f elf -DPIC -g -F dwarf -I./ -I.// -Pconfig.asm -I libavcodec/x86/ -o libavcodec/x86/imdct36.o libavcodec/x86/imdct36.asm

wir das ändern. Wenn wir in die Liste nach dem operation size not specified Fehler schauen, finden wir ihn in der Zeile 102741 auf Ebene <4> der Makroerweiterung. hochscrollen, finden wir den Befehl der Ebene 2 bei Zeile 102668 als extractps [%3 + %4], %1, 1 und den Befehl der Ebene 1 bei Zeile 102583, STORE m6, m7, outq + 16*SBLIMIT, 4*SBLIMIT.

so gehen wir auf libavcodec zurück/x86/imdct36.asm, für STORE suchen, und es an der Linie 145. sicher genug finden, finden wir 3 extractps Anweisungen darunter:

extractps [%3 + %4], %1, 1 
extractps [%3 + 2*%4], %1, 2 
extractps [%3 + 3*%4], %1, 3 

wir sie ändern zu :

extractps dword [%3 + %4], %1, 1 
extractps dword [%3 + 2*%4], %1, 2 
extractps dword [%3 + 3*%4], %1, 3 

angenommen 32-Bit-Operanden. und tatsächlich, es beendet den Build danach, ohne yasm zu installieren.

woher weiß ich, dass es nicht qword sein sollte? Ich tue das nicht, aber es ergibt keinen Sinn, da extractps nur 32-Bit-Ziele verwendet: "Extrahiere einen Gleitkommawert mit einfacher Genauigkeit von xmm2 an dem durch imm8 angegebenen Quelloffset und speichere das Ergebnis in reg oder m32 Die oberen 32 Bits von r64 werden auf Null gesetzt, wenn reg r64 ist. " (http://www.felixcloutier.com/x86/EXTRACTPS.html).