2016-04-26 2 views
0

Я пытаюсь установить FFMPEG Кали Linux 2.0 До сих пор я пытался использовать следующие команды:Компиляция FFMPEG для Kali Linux 2

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

Однако, когда я пытаюсь сделать это я получаю следующие ошибки:

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 

Я действительно тупик о том, как решить эту проблему, как мое мастерство только умеренные ...

+2

Ваш снимок экрана неразборчив и считается плохой формой на S.O. чтобы включить такие элементы, когда простая копия/вставка из вашего терминала в ваш Q сделает что-то читаемое и доступное для поиска (эксперты ищут определенные фразы и используют функцию поиска своего браузера). Пожалуйста, отредактируйте вас Q простым текстом вашей проблемы, используйте инструмент '{}' в левом верхнем углу окна редактирования выделенного текста, чтобы сохранить правильное форматирование для кода/данных/errMsgs/etc. Удачи. – shellter

+0

Спасибо, надеюсь, теперь это приемлемо. – NeMesiS

+2

Флаг обмана по этому вопросу очень вводит в заблуждение. – MetaFight

ответ

2

я наткнулся на ответ только случайно, но мне нужно установить Yasm перед компиляцией ...

apt-get install yasm 
+2

тесты скриптов configure для присутствия ясности, и если это не так, но существует nasm, он установит Makefiles для использования nasm. но язык ассемблера, очевидно, неприемлем для nasm. –

0

эта конкретная проблема занимает много выслеживая, из-за большого количества макросов в источник. Линия 393 гласит:

DEFINE_IMDCT 

и ищу для этого макроса, мы находим его в строке 179. но он имеет многочисленные инструкции в нем, и условной, и любой из них может быть виновником. поэтому сначала мы делаем make V=1, чтобы включить подробный (нормальный) выход GNU make. то мы видим:

[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

мы изменяем, что:

[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

, чтобы получить файл листинга. заглянув в список для ошибки operation size not specified, мы найдем ее в строке 102741, на уровне <4> макрообмена. прокрутка вверх, мы находим команду уровня 2 на линии 102668 как extractps [%3 + %4], %1, 1 и команду уровня 1 на линии 102583, STORE m6, m7, outq + 16*SBLIMIT, 4*SBLIMIT.

поэтому мы вернемся к кодеку/x86/imdct36.asm, поиск STORE, и найти его на линии 145. конечно же, мы находим 3 extractps указания в нем:

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

мы меняем их :

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

Принимая 32-битные операнды. и, конечно же, он завершает сборку после этого, без необходимости устанавливать yasm.

как я узнаю, что это не должно быть qword? Я не знаю, но это не имеет смысла, так как extractps использует только 32-битные адресаты: «Извлеките значение с плавающей точкой с одной точностью из xmm2 в исходное смещение, указанное imm8, и сохраните результат в reg или m32. верхние 32 бита r64 обнуляются, если reg - r64. " (http://www.felixcloutier.com/x86/EXTRACTPS.html).

Смежные вопросы