Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Фреймворк GStreamer. Часто задаваемые вопросы. Сборка версии фреймворка GStreamer из репозитория git

Оригинал: GStreamer FAQ
Авторы: Wim Taymans, Steve Baker, Andy Wingo, Ronald S. Bultje, Stefan Kost
Дата публикации: 27 августа 2014 г.
Перевод: А.Панин
Дата перевода: 5 сентября 2014 г.

6. Сборка версии фреймворка GStreamer из репозитория git

Вопрос: Существует ли способ тестирования или разработки приложения на основе версии фреймворка GStreamer из репозитория git без нарушения целостности компонентов фреймворка GStreamer, установленных в систему из пакетов?

Ответ: Да! Существуют два варианта действий: вы можете либо работать с компонентами фреймворка GStreamer в окружении без установки (обратитесь к ответу на вопрос "Как я могу вести разработку, пользуясь неустановленной копией фреймворка GStreamer?"), либо использовать инструмент jhbuild проекта GNOME.

В: Как я могу получить новейшую копию исходного кода фреймворка GStreamer из репозитория git?

О: Данные проекта GStreamer расположены на сервере проекта Freedesktop.org. Сам фреймворк GStreamer состоит из различных компонентов. Вначале вам должен понадобиться модуль "gstreamer", содержащий исходный код ядра фреймворка, а также модули "gst-plugins-base" и "gst-plugins-good", содержащие исходный код базового набора плагинов. Наконец, вам также могут понадобиться модули "gst-plugins-ugly", "gst-plugins-bad" и "gst-ffmpeg" для более полной поддержки мультимедийных форматов.

Для получения новейшей версии исходного кода ядра фреймворка и базовых модулей из репозитория git следует использовать следующий цикл вызовов:
for module in gstreamer gst-plugins-base gst-plugins-good; do
  git clone git://anongit.freedesktop.org/git/gstreamer/$module ;
done

В результате в вашей текущей директории будут созданы три директории: "gstreamer", "gst-plugins-base" и "gst-plugins-good". В том случае, если вы хотите получить исходный код, относящийся к другому модулю, вы можете использовать приведенную выше команду git clone и заменить переменную $module на имя модуля. Как только вы получите исходный код, относящийся к указанным модулям, вам придется перейти в каждую из директорий и выполнить команду ./autogen.sh, которая, кроме всего прочего, позволит получить исходный код, относящийся к модулям, связанным с текущим модулем.

На странице с информацией о модулях приведен список активно разрабатываемых модулей с краткими описаниями.

В: Как я могу получить доступ с правами разработчика к репозиторию исходного кода git проекта GStreamer?

О: В том случае, если вы хотите получить доступ с правами разработчика к репозиторию исходного кода git проекта GStreamer, вы должны отправить запрос через список рассылки для разработчиков или обратиться с просьбой напрямую к одному из разработчиков. Обычно мы рассматриваем запросы только от тех разработчиков, которые были активны и продуктивно участвовали в разработке проекта GStreamer в течение некоторого времени. В том случае, если вы пока не являетесь зарегистрированным разработчиком, обладающим учетной записью на ресурсе Freedesktop.org, вам придется предоставить администраторам этого ресурса следующую информацию:
  1. желаемое имя пользователя системы unix
  2. ваше полное имя
  3. ваш адрес электронной почты
  4. копию вашего публичного ключа sshv2. Если у вас пока нет этого ключа, вы можете сгенерировать его, выполнив команду "ssh-keygen -t rsa -f ~/.ssh/id_rsa.pub-fdo". Результирующий публичный ключ будет сохранен в файле ~/.ssh/id_rsa.pub-fdo
  5. ваш идентификатор ключа GPG. Он позволит вам добавлять и удалять ключи ssh, связанные с вашей учетной записью.

После сбора данной информации следует обратиться к документу, расположенному по адресу http://freedesktop.org/wiki/AccountRequests, для получения рекомендаций относительно ваших дальнейших действий.

В: Я попытался использовать сценарий autogen.sh, но его исполнение завершилось неудачей с выводом ошибок, связанных с aclocal:
+ running aclocal -I m4 -I common/m4 ...
aclocal: configure.ac: 8: macro `AM_DISABLE_STATIC' not found in library
aclocal: configure.ac: 17: macro `AM_PROG_LIBTOOL' not found in library
aclocal failed

Что случилось?

О: Утилита aclocal не может найти два макроса, добавленных утилитой libtool в файл с именем libtool.m4. Обычно такая ошибка указывает на то, что вы не установили утилиту libtool, но в этом случае исполнение сценария autogen.sh должно было завершиться неудачей из-за невозможности использования утилиты libtool.

Более вероятной является ситуация, в которой вы установили пакет automake (содержащий утилиту aclocal) с использованием префикса пути, отличного от того, который был использован при установке утилиты libtool. Вы можете проверить это, узнав, какие префиксы путей были использованы при установке утилит aclocal и libtool.

Для решения возникшей проблемы вы можете выполнить одно из трех действий:

  1. установить пакет automake с использованием того же префикса пути, что был использован при установке утилиты libtool.

  2. принудительно использовать пакет automake в условиях работы с префиксом пути, заданным при установке утилиты libtool, задействовав параметр --with-automake.

  3. выяснить префикс пути, использованный при установке утилиты libtool и сообщить утилите aclocal о корректном пути, установив значение соответствующей переменной окружения с помощью команды:
    export ACLOCAL_FLAGS="-I $(prefix)/share/aclocal"
    

    причем переменная $(prefix) должна быть заменена на префикс пути, использованный при установке утилиты libtool.

В: Почему при компиляции используются флаги "-Wall -Werror"?

О: Флаг "-Wall" используется потому, что с помощью него выявляется большое количество возможных проблем в коде. Безусловно, не все выводимые предупреждения свидетельствуют о проблемах, но в любом случае лучше искать методы нейтрализации ложных предупреждений компилятора, чем тратить дни на поиск ошибки, о которой он мог сообщить.

Флаг "-Werror" деактивируется при выпуске новых версий. По умолчанию он активирован для исходного кода из репозитория git и пакетов предварительных выпусков новых версий для того, чтобы люди обращали внимание на проблемы, обнаруженные благодаря флагу "-Wall". Мы хотим, чтобы люди активно обнаруживали подобные ошибки и сообщали о них, либо исправляли их.

В том случае, если вы по какой-то причине желаете деактивировать данные флаги и уверены в своей правоте, вы можете использовать команду:
make ERROR_CFLAGS=""

для очистки значения переменной CFLAGS от флагов, предназначенных для проверки наличия ошибок.


Следующий раздел : Разработка приложений на основе фреймворка GStreamer.