Настройка WebRTC + Eclipce 4.3 + ubuntu 13.10

от автора

Добрый день, хабрапользователи!

Выкладываю небольшую шпаргалку по настройке WebRTC + Eclipce 4.3 + ubuntu 13.10. Это может быть полезно тем, кто решил попробовать себя в написании кода на С++ для webrtc.

Скажу сразу, что у Google есть неплохая документация для того, чтобы настроить среду программирования и начать пользоваться. Но к сожалению, у меня каждый раз уходит очень много времени на установку всего этого. Не каждый же день приходится устанавливать все по новому. Поэтому решил поделиться опытом, может кому-то она поможет сэкономить пару суток. На ubuntu до версии 12.10 почти всегда все ставилось хорошо и сразу начинало работать. Но недавно вышла версия 13.10 и тут начались еще большие проблемы. На установку гугл-кода пришлось потратить пол-дня. А что делать, тому кто только начал разбираться?

Получение кода

Итак, начнем. Первым делом нужно установить depot_tools

$ mkdir ~/webrtc $ cd ~/webrtc $ wget https://src.chromium.org/svn/trunk/tools/depot_tools.zip 

Далее распаковывем скаченный архив в этот же каталог. И теперь нам нужно прописать пути к этой папке:

$ export PATH="$PATH":/home/username/webrtc/depot_tools $ export CHROMIUM_ROOT = /home/username/webrtc/ #Не знаю правда зачем, но у меня сейчас так. Может и не нужно 

И заодно дабавляем тоже самое в свой .bashrc, чтобы после перезагрузки переменные восстанавливались:

$ sudo nano ~/.bashrc 

Добавляем те же самые строки. Конечно же «username» нужно заменить на свое имя пользователя:

export PATH="$PATH":/home/username/webrtc/depot_tools export CHROMIUM_ROOT = /home/username/webrtc 

Далее проверяем все ли правильно сделано:

$ gclient --version gclient.py 0.7 

Если верно, то должны увидеть версию клиента. Если нет, то скорее всего не установлен python. Нужно установить его.
Итак, gclient заработал и теперь нужно скачать исходники. Возвращаемся в директорию webrtc и скачиваем:

$ gclient config http://webrtc.googlecode.com/svn/trunk $ gclient sync --force 

Скачиваться будет долго. После того как закачалось, нужно установить gyp:

$ sudo apt-get install gyp 

Установили gyp, переходим к установке необходимых требований для компиляции исходников. Для этого в скаченной нами ранне папке есть скрипт install-build-deps.sh. Запускаем его:

$ sudo ~/webrtc/trunk/build/install-build-deps.sh 

И нам показывают неприятное сообщение: ERROR: Only Ubuntu 12.04 (precise) through 13.04 (raring) are currently supported. Не беда, апгрейдим скрипт. Находим строку 55 приводим ее к такому виду:

ubuntu_versions="12\.04|12\.10|13\.04|13\.10" 

Заново запускаем скрипт install-build-deps.sh. Начнется установка необходимых программ и библиотек.
Теперь находясь в директории ~/webrtc/ запускаем gclient с другими парамерами:

$ gclient runhooks --force 

Если появилась ошибка:

File "<string>", line 1, in <module> AssertionError: Point $JAVA_HOME or the java_home gyp variable to a directory containing include/jni.h! gyp: Call to 'python -c "import os; dir=os.getenv('JAVA_HOME', '/usr/lib/jvm/java-6-sun'); assert os.path.exists(os.path.join(dir, 'include/jni.h')), 'Point \$JAVA_HOME or the java_home gyp variable to a directory containing include/jni.h!'; print dir"' returned exit status 1.

То устанавливаем openjdk-6-jdk и прописываем пути:

$ sudo apt-get install openjdk-6-jdk  $ sudo ln -s /usr/lib/jvm/java-6-openjdk-amd64 /usr/lib/jvm/java-6-sun $ export JAVA_HOME=/usr/lib/jvm/java-6-openjdk-amd64 $ echo "export JAVA_HOME=/usr/lib/jvm/java-6-openjdk-amd64" >> ~/.bashrc 

На всякий случай добавляем, для того чтобы у нас сгенерировался Makefile:

$ echo "export GYP_GENERATORS=make" >> ~/.bashrc 

Запускаем последний раз

$ gclient sync --force $ gclient runhooks --force 

И убеждаемся, что был создан Makefile в директории ~/webrtc/trunk/

Импорт в Eclipse и компиляция

Теперь можно запускать Eclipse и импортировать проект по этой инструкции: LinuxEclipseDev (Раздел «Install the C Development Tools (»CDT")")
Теперь, когда создали проект, пробуем его собрать.

Ошибка 1

У меня самая первая ошибка показала строки, содержащие:
narrowing conversion of ‘rate’ from ‘int’ to ‘uint32_t []
Для этого изменил файл webrtc/modules/rtp_rtcp/interface/rtp_payload_registry_unittest.cc, в нем функцию:

  ModuleRTPUtility::Payload* ExpectReturnOfTypicalAudioPayload(       uint8_t payload_type, int rate) 

на

  ModuleRTPUtility::Payload* ExpectReturnOfTypicalAudioPayload(       uint8_t payload_type, uint32_t rate) 
Ошибка 2

В следющей ошибке было:
... -Werror=extra ...
Файл /webrtc/trunk/webrtc/build/common.gypi у
Удалить строку 179

179:  '-Wextra', 

Файл /webrtc/trunk/build/common.gypi
Строка 3875
Изменить

 3875:      'GCC_TREAT_WARNINGS_AS_ERRORS': 'YES',    # -Werror 

На

3875:	'GCC_TREAT_WARNINGS_AS_ERRORS': 'NO',    # -Werror 

И чуть ниже строка 3882, удалить ее:

3882: '-Wextra', 

Ошибка 3

Сообщение вроде этого:
/webrtc/talk/app/webrtc/java/jni/peerconnection_jni.cc:113:7: note: in definition of macro ‘CHECK’
Добавляем в файл /webrtc/talk/app/webrtc/java/jni/peerconnection_jni.cc:

#include <unistd.h> 

Ошибка n

Дальше уже не стал исправлять ошибки компилятора в unittest-ах гугла и вообще выклчил их компиляцию в файле webrtc/trunk/all.gyp.

#'talk/libjingle_tests.gyp:*', 

В итоге, в папке /home/udaf/rabbit/webrtc/trunk/out/Debug/ появились скомпилированные примеры, среди которых набольший интерес представляют: peerconnection_client и peerconnection_server

Коротко о Gyp

Гугл-код для компиляции использует gyp. В .gyp файлах можно управлять компиляцией приложений. Например можно подключить сторонние библиотеки к своему коду вот так:

		'cflags': [ 			'-I/usr/local/include -I/usr/local/include/cppconn -fexceptions', 		], 		'link_settings': { 			'ldflags': [ 				'<!@(pkg-config --libs gtk+-2.0 gmodule-2.0 gthread-2.0 libavcodec libavformat libavutil libswscale)', 				'-lmysqlcppconn' 			], 			'libraries': [ 		  		'-ldl', 		  		'-lmysqlcppconn' 			], 		}, 

Ссылки

ссылка на оригинал статьи http://habrahabr.ru/post/204068/


Комментарии

Один комментарий на ««Настройка WebRTC + Eclipce 4.3 + ubuntu 13.10»»

  1. Аватар пользователя Angel
    Angel

    На Ubuntu еще приходилось настраивать Flashphoner Web Call Server, когда нужна была платформа для аудио и видео звонков прямо из web-браузера c поддержкой исходящих звонков на SIP, GSM, PSTN телефоны и SIP устройства. Платформа основана на использовании технологий HTML5 Websockets, WebRTC и Flash RTMFP. Настраивалась легко, на сайте http://goo.gl/90yvaD есть инструкции по настройке.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *