Официальный форум СВД Встраиваемые Системы
19 Апрель, 2024, 20:57:48 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
 
 
 Сайт СВД ВС  Начало   Помощь Поиск Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Сборка ffmpeg для QNX 6.5.0  (Прочитано 2587 раз)
Tacio
Пользователь

Сообщений: 44


« : 19 Июнь, 2015, 11:23:07 »

Имеется виртуальная машина с QNX 6.5.0 x86 и компилятором GCC 4.4.2 на борту.
На данный момент в ней успешно удалось собрать последний стабильный срез x264 (x264-snapshot-20141218-2245) со следующими параметрами:
Код:
./configure --enable-static --enable-shared --disable-cli --disable-opencl --cross-prefix=i486-pc-nto-qnx6.5.0-
и ffmpeg 0.8.15 со следующими параметрами:
Код:
./configure --enable-cross-compile --cross-prefix=i486-pc-nto-qnx6.5.0- --target-os=qnx --arch=x86 --enable-memalign-hack --enable-gpl --enable-shared --enable-static --extra-cflags='-O3 -I/tmp/x264' --extra-ldflags=-L/tmp/x264 --pkg-config=pkg-config --disable-network --enable-optimizations --disable-programs --enable-asm --disable-doc --disable-debug --disable-everything --enable-decoder=h264 --enable-demuxer=h264 --enable-parser=h264 --host-os=qnx --tempprefix=/tmp
Однако, версия ffmpeg 0.8.15 последняя, которая успешно собралась. Более новые версии не собираются с этими же параметрами configure. Например для ffmpeg последного среза выводится следующее сообщение:
Код:
i486-pc-nto-qnx6.5.0-gcc is unable to create an executable file.
C compiler test failed.

If you think configure made a mistake, make sure you are using the latest
version from Git.  If the latest version fails, report the problem to the
ffmpeg-user@ffmpeg.org mailing list or IRC #ffmpeg on irc.freenode.net.
Include the log file "config.log" produced by configure as this will help
solve the problem.
Последние строки config.log, указывающие на ошибку:
Код:
check_ld cc
check_cc
BEGIN /tmp.localhost..c
    1 int main(void){ return 0; }
END /tmp.localhost..c
i486-pc-nto-qnx6.5.0-gcc -O3 -I/tmp/x264 -c -o /tmp.localhost..c
i486-pc-nto-qnx6.5.0-gcc: no input files
C compiler test failed.
Полный config.log прикреплён. А хотелось бы собрать ffmpeg с поддержкой HEVC!
Записан
Олег Большаков
Легенда

Сообщений: 3140



« Ответ #1 : 19 Июнь, 2015, 16:25:31 »

Проблема в том, что в configure ffmpeg используется синтаксис, который не поддерживает ksh в QNX. В частности, для прохождения этой проверки в QNX надо в configure заменить строку 842:

Код:
check_cmd $cc $CPPFLAGS $CFLAGS "$@" $CC_C $(cc_o $TMPO) $TMPC

на:

Код:
check_cmd $cc $CPPFLAGS $CFLAGS "$@" $CC_C $(cc_o) $TMPO $TMPC

И ещё строку 915:

Код:
check_cmd $ld $LDFLAGS $flags $(ld_o $TMPE) $TMPO $libs $extralibs

на:

Код:
check_cmd $ld $LDFLAGS $flags $(ld_o) $TMPE $TMPO $libs $extralibs


Подозреваю, что на этом проблемы не закончатся. На мой взгляд лучше выполнить кросс-сборку ffmpeg для QNX в среде Linux.
Записан
Василий Дмитриев
Ветеран

Сообщений: 363



« Ответ #2 : 20 Июнь, 2015, 22:49:03 »

или собрать и поставить bash
Записан

Санкции! Запрещаю Бараку Обаме и членам конгресса США читать мои посты!
Tacio
Пользователь

Сообщений: 44


« Ответ #3 : 21 Июнь, 2015, 15:02:18 »

Олег Большаков, большое спасибо за совет! В ubuntu 15.04 всё собралось без проблем!
Василий Дмитриев, собирал и ставил bash версии 4.3 - не помогло. Скорее всего криво его поставил.

Однако, решил не останавливаться на достигнутом и попробовал собрать с GCC версии 4.8.3. Библиотеки x264 и х265 собрались, а вот с ffmpeg снова проблема...
Парметры в configure передаю следующие:
Код:
./configure --enable-cross-compile --cross-prefix=i486-pc-nto-qnx6.5.0- --target-os=qnx --arch=x86 --enable-memalign-hack --enable-gpl --enable-shared --enable-static --extra-cflags='-I/home/enzo/x264' --extra-ldflags=-L/home/enzo/x264 --pkg-config=pkg-config --disable-network --enable-optimizations --disable-programs --enable-asm --disable-doc --disable-debug --disable-everything --enable-decoder=h264 --enable-demuxer=h264 --enable-parser=h264 --host-os=linux --sysroot=/opt/qnx650/target/qnx6/x86/
Затем, при попытке выполнить make:
Код:
enzo@enzo-VirtualBox:~/ffmpeg$ make
CC libavdevice/alldevices.o
In file included from ./libavutil/log.h:24:0,
                 from libavdevice/avdevice.h:46,
                 from libavdevice/alldevices.c:22:
/opt/qnx650/host/linux/x86/usr/lib/gcc/i486-pc-nto-qnx6.5.0/4.8.3/include/stdarg.h:28:25: fatal error: stdarg.h: No such file or directory
 #include_next <stdarg.h>
                         ^
compilation terminated.
common.mak:57: recipe for target 'libavdevice/alldevices.o' failed
make: *** [libavdevice/alldevices.o] Error 1

config.mak, генерируемый configure, прикреплён.

Возможно, подобная проблема обсуждается здесь, но я пробовал добавлять -std=gnu99 - не помогло, либо я что-то неправильно понял.
« Последнее редактирование: 22 Июнь, 2015, 12:07:14 от Tacio » Записан
Tacio
Пользователь

Сообщений: 44


« Ответ #4 : 22 Июнь, 2015, 11:30:41 »

Прощу прощения, в предыдущем сообщении прикрепил не тот файл!
Записан
Олег Большаков
Легенда

Сообщений: 3140



« Ответ #5 : 22 Июнь, 2015, 12:59:05 »

Судя по всему ошибка не имеет отношения к ffmpeg. Выглядит так, будто некорректно установлен GCC 4.8.3. Уточните, пожалуйста, с какой целью Вы пытаетесь выполнить сборку другой версией GCC?
Записан
Tacio
Пользователь

Сообщений: 44


« Ответ #6 : 22 Июнь, 2015, 13:47:35 »

Использование gcc версии 4.8.3 давало от 5 до 10% прироста производительности в некоторых ситуациях в нашем ПО по сравнению в 4.4.2. Поэтому для совместимости решил пересобрать ffmpeg с новой версией gcc.
Проблему решил. Выкинул параметр "--sysroot=/opt/qnx650/target/qnx6/x86/" из configure.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP © 2002-2024 СВД Встраиваемые Системы.
При использовании материалов сайта ссылка на forum.kpda.ru обязательна.

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines | © Aiwan. Kolobok smiles | Sitemap
Valid XHTML 1.0! Valid CSS!
Сайт СВД ВС

В последний раз google посещал эту страницу 06 Март, 2024, 19:02:23