18 августа 2016 г.

Компиляция Cinelerra-HV 4.6.1 на 32-bit системе.



Компиляция Cinelerra-HV (Heroine Virtual) традиционно славится своими особенностями.
В ходе компилирования новой HV 4.6.1 на 32-bit системе столкнулся с несколькими ошибками, существующими уже на протяжении нескольких лет/релизов.


Для исправления ошибки типа

/home/user/cinelerra-4.6.1/quicktime/thirdparty/ffmpeg-0.6.1/libavcodec/vaapi.c:57: undefined reference to `vaUnmapBuffer'
../quicktime/i686/libquicktime.a(vaapi.o): In function `commit_slices':
/home/user/cinelerra-4.6.1/quicktime/thirdparty/ffmpeg-0.6.1/libavcodec/vaapi.c:97: undefined reference to `vaCreateBuffer'
/home/user/cinelerra-4.6.1/quicktime/thirdparty/ffmpeg-0.6.1/libavcodec/vaapi.c:106: undefined reference to `vaCreateBuffer'
collect2: ld returned 1 exit status
make[2]: *** [../bin/cinelerra] Error 1


в каталоге исходников /cinelerra-4.6.1 переходим в каталог /cinelerra и там в файле `Makefile`
409 строку приводим к виду -lbz2 \
затем добавляем ниже строчку -lva



Ошибка

make[5]: Вход в каталог `/home/user/cinelerra-4.6.1/quicktime/thirdparty/faac-1.24/libfaac'
if /bin/bash ../libtool --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../include -O2 -Wall -MT aacquant.lo -MD -MP -MF ".deps/aacquant.Tpo" -c -o aacquant.lo aacquant.c; \
then mv -f ".deps/aacquant.Tpo" ".deps/aacquant.Plo"; else rm -f ".deps/aacquant.Tpo"; exit 1; fi
In file included from /usr/include/math.h:94,
from common.h:347,
from bits.c:28:
/usr/include/bits/mathcalls.h:326: error: conflicting types for 'lrintf'
common.h:313: note: previous definition of 'lrintf' was here
make[5]: *** [bits.lo] Ошибка 1
make[5]: Выход из каталога `/home/user/cinelerra-4.6.1/quicktime/thirdparty/faad2-2.0/libfaad'
make[4]: *** [all-recursive] Ошибка 1
make[4]: Выход из каталога `/home/user/cinelerra-4.6.1/quicktime/thirdparty/faad2-2.0'
make[3]: *** [all] Ошибка 2


исправляется следующим образом https://sourceforge.net/p/heroines/bugs/152/
а именно:
- в каталоге исходников переходим в каталог /cinelerra-4.6.1/quicktime/thirdparty/ и удаляем там каталог faad2-2.0
- скачиваем, например, отсюда https://launchpad.net/ubuntu/+source/faad2 пакет исходного кода faad2_2.7.orig.tar.gz или версию выше
- после его распаковки, меняем его название с faad2_2.7 на faad2_2.0
- помещаем этот каталог в /cinelerra-4.6.1/quicktime/thirdparty/ вместо удалённого

Кроме того возникают специфические при компиляции HV на 32-бит системах ошибки типа

cp ../thirdparty/mjpegtools*/mpeg2enc/mpeg2enc ../bin/mpeg2enc.plugin
make[2]: Выход из каталога `/home/user/cinelerra-4.6.1/plugins'
cp libmpeg3/x86_64/mpeg3dump libmpeg3/x86_64/mpeg3peek libmpeg3/x86_64/mpeg3toc libmpeg3/x86_64/mpeg3cat bin
cp: невозможно выполнить stat для «libmpeg3/x86_64/mpeg3dump»: Нет такого файла или каталога
cp: невозможно выполнить stat для «libmpeg3/x86_64/mpeg3peek»: Нет такого файла или каталога
cp: невозможно выполнить stat для «libmpeg3/x86_64/mpeg3toc»: Нет такого файла или каталога
cp: невозможно выполнить stat для «libmpeg3/x86_64/mpeg3cat»: Нет такого файла или каталога make[1]: *** [install] Ошибка 1
make[1]: Выход из каталога `/home/user/cinelerra-4.6.1'
make: *** [install] Ошибка 2
~/cinelerra-4.6.1$ 


> cp: cannot stat «libmpeg3/x86_64/mpeg3dump»: No such file or directory
> cp: cannot stat «libmpeg3/x86_64/mpeg3peek»: No such file or directory
> cp: cannot stat «libmpeg3/x86_64/mpeg3toc»: No such file or directory
> cp: cannot stat «libmpeg3/x86_64/mpeg3cat»: No such file or directory
> make[1]: *** [install] Error 1


В интернете решения не было (теперь есть), однако исправляется это довольно легко.

В каталоге исходников /cinelerra-4.6.1 переходим в каталог /build и там в файле Makefile.cinelerra в строке 

cp libmpeg3/x86_64/mpeg3dump libmpeg3/x86_64/mpeg3peek libmpeg3/x86_64/mpeg3toc libmpeg3/x86_64/mpeg3cat bin
x86_64
заменяем соответственно вашей системе
в моём случае это
cp libmpeg3/i686/mpeg3dump libmpeg3/i686/mpeg3peek libmpeg3/i686/mpeg3toc libmpeg3/i686/mpeg3cat bin


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

После того, как отработает `make`, вы найдёте бинарный файл cinelerra в каталоге исходников в каталоге /bin и можете уже запустить программу прямо оттуда, однако лучше продолжить,

сделав `make install`(sudo не требуется).
После `make install` все бинарные файлы будут скопированы в каталог /bin каталога исходников и вы сможете разместить этот каталог /bin где угодно, удалив остальные, уже не нужные каталоги.

Надо дополнить, что скрипт ./configure игнорирует пользовательские prefix path. 
И даже `sudo make install` устанавливает файлы в каталог /bin каталога исходников.

Вот такой вот `кот в мешке` от Adam Williams.


P.S.
Если вы используете/-овали ранее Cinelerra-CV, не забудьте перед запуском HV удалить (во избежание неведомых глюков) каталог настроек /home/user/.bcast от Cinelerra-CV. Он имеет у обоих версий одинаковое название. 

UPDATE:
С мая 2017 каталог  настроек Cinelerra-CV носит название /.cinelerra-cv

Комментариев нет:

Отправить комментарий