LinuxForum.Fans
Тема

Компиляция linphone

Автор: jacuba 23 сообщений 9259 просмотров
#147829

Добрый день.
Возникла следующая проблема, при компиляции linphon'a получаю следующую ошибку:

checking X11/extensions/Xv.h presence... yes
checking for X11/extensions/Xv.h... yes
checking for X11/extensions/Xvlib.h... no
checking for XvCreateImage in -lXv... no
configure: error: No video output API found. Install either X11+Xv headers or SDL library.
configure: error: ./configure failed for mediastreamer2

SDL lib скачал и установил, X11+xv - что такое не знаю, в дистрибутивах ничего подобного нет.
Прошу у вас помощи и разъяснений, уважаемые.
Заранее благодарен.

#147852

Наверное просится установка пакета libxv-dev

#147856

jacuba, у команды ./configure есть опция --help. Покажите вывод команды с этой опцией.

jacuba написал:
configure: error: ./configure failed for mediastreamer2

У вас установлен пакет с похожим названием?

P.S. Неужели нельзя найти готовый бинарный пакет для вашего дистрибутива? Почему вы пытаетесь собирать из исходников?

#147918

Спасибо за ответы,
установив libxv-dev, проблема была решена.
Собираю из исходников, потому что необходимо запустить сип-клиент на машине с ARM-архитектурой.

#148171

Появился еще вопрос:
Возникла следующая проблема при компиляции linphone на машине с i686 для машины с ARM-архитектурой:

Конфигурация:

text
$cd linphone-3.4.3
$sudo ./configure --prefix=/home/user/armbuild --host=i686-pc-linux --target=arm-linux --disable-static --disable-glib --enable-gnome_ui=no --disable-manual --enable-alsa --with-speex=/home/user/speex

Конфигурация проходит успешно, но в конце получаю предупреждение:

text
configure: WARNING: ortp-0.15.0 breaks compatibility with older releases, because value returned by rtp_session_recvm_with_ts() has
changed. See the API documentation in doc/ for further readings.
Linphone build configuration ended.
* GTK interface will be compiled.
* Console interface will be compiled.
Now type 'make' to compile, and then 'make install' as root to install it.

После этого делаю sudo make и получаю ошибку:

text
CCLD   mediastream
../src/.libs/libmediastreamer.so: undefined reference to `speex_echo_cancellation'
../src/.libs/libmediastreamer.so: undefined reference to `speex_echo_state_init'
../src/.libs/libmediastreamer.so: undefined reference to `speex_preprocess_state_destroy'
../src/.libs/libmediastreamer.so: undefined reference to `speex_preprocess_state_init'
../src/.libs/libmediastreamer.so: undefined reference to `speex_echo_ctl'
../src/.libs/libmediastreamer.so: undefined reference to `speex_echo_state_destroy'
../src/.libs/libmediastreamer.so: undefined reference to `speex_preprocess_ctl'
../src/.libs/libmediastreamer.so: undefined reference to `speex_preprocess_run'
collect2: ld returned 1 exit status
make[4]: *** [mediastream] Ошибка 1
make[4]: Leaving directory `/home/user/linphone-3.4.3/mediastreamer2/tests'
make[3]: *** [all-recursive] Ошибка 1
make[3]: Leaving directory `/home/user/linphone-3.4.3/mediastreamer2'
make[2]: *** [all] Ошибка 2
make[2]: Leaving directory `/home/user/linphone-3.4.3/mediastreamer2'
make[1]: *** [all-recursive] Ошибка 1
make[1]: Leaving directory `/home/user/linphone-3.4.3'
make: *** [all] Ошибка 2

Собственно это и вызывает затруднение, откуда такая ошибка и как можно от нее избавиться?
Прошу у вас помощи, уважаемые. Заранее благодарен.

#148275

Я не вникал глубоко в этот процесс, но вообще для запуска configure
не требуется sudo. Там есть README.arm, вы всё сделали, как там написано?
Вроде бы там сначала надо скомпилировать этот speex, и вообще там
примеры запуска configure.

Ещё можно взять исходные тексты linphone прямо с http://www.linphone.org
там есть пример команды. Создатся каталог linphone.

Пётр.

#148495

Спасибо, Peter, я действительно не знал, что там есть файл README.arm
Все делал по [url=http://www.mail-archive.com/linphone-users@nongnu.org/msg00434.html]этой[/url] инструкции.

Сейчас начал делать так, как написано в реадми и тут же возникла проблема:

Я установил себе кросскомпилятор, проверил его работу и убедился в работоспособности. Установлен он в /home/user/7803/toolchain/bin.
Я добавил путь к нему к переменной $PATH:

text
$ export PATH=$PATH:/home/user/7803/toolchain/bin
$ echo $PATH 
 /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/home/user/7803/toolchain/bin/

Теперь, что бы убедиться, что arm-unknown-linux-uclibcgnueabi-gcc видно отовсюду, я делаю:

text
$ cd ~
$ arm-unknown-linux-uclibcgnueabi-gcc ~/src/hello.c 

и получаю на выходе файл a.out, скомпилированный для ARM.

Теперь я конфигурирую ncurses, как написано в реадми, поменяв значение --host:

text
./configure --prefix=/usr --host=arm-unknown-linux-uclibcgnueabi --with-gnu-ld --with-shared

во время конфигурирования вижу много строк, в том числе и эти:

text
checking for arm-unknown-linux-uclibcgnueabi-gcc... arm-unknown-linux-uclibcgnueabi-gcc
checking for arm-unknown-linux-uclibcgnueabi-ranlib... arm-unknown-linux-uclibcgnueabi-ranlib
checking for arm-unknown-linux-uclibcgnueabi-ld... arm-unknown-linux-uclibcgnueabi-ld
checking for arm-unknown-linux-uclibcgnueabi-ar... arm-unknown-linux-uclibcgnueabi-ar
checking for arm-unknown-linux-uclibcgnueabi-ar... (cached) arm-unknown-linux-uclibcgnueabi-ar
checking for arm-unknown-linux-uclibcgnueabi-g++... arm-unknown-linux-uclibcgnueabi-g++

из чего делаю вывод, что все эти утилиты (не знаю как еще назвать) "видно".
Далее make и make install, таким же образом, как написано в реадми.

Дойдя до шага на котором надо конфигурировать libosip, я делаю так, как написано в реадми, изменив значение --host

text
sudo ./configure --prefix=/usr --host=arm-unknown-linux-uclibcgnueabi --with-gnu-ld --with-gnu-ld --disable-static

Запускаю от суперпользователя, потому что подругому получаю сообщение

text
bash: ./configure: Отказано в доступе

После чего в показыавющихся строках я вижу следующее:

text
checking host system type... arm-unknown-linux-uclibcgnueabi
checking for arm-unknown-linux-uclibcgnueabi-gcc... no
checking for arm-unknown-linux-uclibcgnueabi-g++... no
checking for arm-unknown-linux-uclibcgnueabi-c++... no
checking for arm-unknown-linux-uclibcgnueabi-gpp... no
checking for arm-unknown-linux-uclibcgnueabi-aCC... no
checking for arm-unknown-linux-uclibcgnueabi-CC... no
checking for arm-unknown-linux-uclibcgnueabi-cxx... no
checking for arm-unknown-linux-uclibcgnueabi-cc++... no
checking for arm-unknown-linux-uclibcgnueabi-cl... no
checking for arm-unknown-linux-uclibcgnueabi-FCC... no
checking for arm-unknown-linux-uclibcgnueabi-KCC... no
checking for arm-unknown-linux-uclibcgnueabi-RCC... no
checking for arm-unknown-linux-uclibcgnueabi-xlC_r... no
checking for arm-unknown-linux-uclibcgnueabi-xlC... no

Из чего делаю вывод, что компилятора уже не "видно".
Прошу совета и разъяснений.

#148502

если начать выполнять все манипуляции от лица суперпользователя, т.е.

text
$ su 
Пароль: 
# 

то подобных ошибок не появляется.
Остановился на этом решении.

#148632

появилась еще одна проблема: при компиляции speex получаю следующее сообщение

text
root@debian:/home/user/arm1/speex-1.2beta2# make
make  all-recursive
make[1]: Entering directory `/home/user/arm1/speex-1.2beta2'
Making all in libspeex
make[2]: Entering directory `/home/user/arm1/speex-1.2beta2/libspeex'
/bin/bash ../libtool --mode=link arm-unknown-linux-uclibcgnueabi-gcc  -g -O2   -o testenc  testenc.o libspeex.la -lm 
arm-unknown-linux-uclibcgnueabi-gcc -g -O2 -o .libs/testenc testenc.o  ./.libs/libspeex.so -lm
testenc.o: In function `fprintf':
/usr/include/bits/stdio2.h:98: undefined reference to `__fprintf_chk'
/usr/include/bits/stdio2.h:98: undefined reference to `__fprintf_chk'
/usr/include/bits/stdio2.h:98: undefined reference to `__fprintf_chk'
./.libs/libspeex.so: undefined reference to `__printf_chk'
collect2: ld returned 1 exit status
make[2]: *** [testenc] Ошибка 1
make[2]: Leaving directory `/home/user/arm1/speex-1.2beta2/libspeex'
make[1]: *** [all-recursive] Ошибка 1
make[1]: Leaving directory `/home/user/arm1/speex-1.2beta2'
make: *** [all] Ошибка 2

гугл вообще ничего про это не знает oO
уважаемые, помогите разобраться.

#148713

Если уж есть права root, то я бы установил этот кросс-компилятор
в предопределённое место, в /usr/local/. Он ведь получен компиляцией,
а не установлен из пакета? Тогда проще потом будет обеспечивать
доступность и библиотек и бинарных и заголовочных файлов.

Т.е. для начала удалите его из $HOME и установите туда, куда он
устанавливается по умолчанию. Также configure и make надо вводить
от пользователя.

Пётр.

#148941

Проблема решилась путем установки компилятора в /usr

Теперь при попытки конфигурирования самого libphone получаю сообщение:

text
# ./configure --prefix=/usr --host=arm-linux --with-gnu-ld --disable-static \
        --disable-glib --with-osip=$ARM_INSTALL_TREE/usr \
    --with-readline=$ARM_INSTALL_TREE/usr \
        SPEEX_CFLAGS="-I$ARM_INSTALL_TREE/usr/include" \
        SPEEX_LIBS="-L$ARM_INSTALL_TREE/usr/lib -lspeex "

... checking eXosip2/eXosip.h usability... no checking eXosip2/eXosip.h presence... no checking for eXosip2/eXosip.h... no configure: error: Could not find eXosip2 headers !

Делаю вывод, что хидеры не могут быть найдены потому что их просто нет.
Принимаю решение установить libexosip. Скачиваю и распаковываю.

text
# cd ../libeXosip2-3.5.0/
# ./configure --prefix=/usr --host=arm-linux --with-gnu-ld --disable-static 
#  make 
...
eXosip.c: In function `_eXosip_transaction_init':
eXosip.c:76: error: `osip_srv_record_t' undeclared (first use in this function)
eXosip.c:76: error: (Each undeclared identifier is reported only once
eXosip.c:76: error: for each function it appears in.)
eXosip.c:76: error: parse error before "record"
eXosip.c:84: error: `record' undeclared (first use in this function)
eXosip.c:88: error: `OSIP_SUCCESS' undeclared (first use in this function)
eXosip.c:90: warning: implicit declaration of function `osip_transaction_set_srv_record'
eXosip.c: In function `eXosip_transaction_find':
eXosip.c:106: error: `OSIP_SUCCESS' undeclared (first use in this function)
eXosip.c:110: error: `OSIP_NOTFOUND' undeclared (first use in this function)
eXosip.c: In function `_eXosip_retry_with_auth':
eXosip.c:130: error: `OSIP_BADPARAMETER' undeclared (first use in this function)
eXosip.c:134: error: `OSIP_UNDEFINED_ERROR' undeclared (first use in this function)
eXosip.c:154: warning: passing arg 1 of `osip_list_get' from incompatible pointer type
eXosip.c:160: error: `OSIP_SYNTAXERROR' undeclared (first use in this function)
eXosip.c:1430: warning: passing arg 1 of `osip_list_add' from incompatible pointer type
eXosip.c: In function `eXosip_update_top_via':
eXosip.c:1464: warning: passing arg 1 of `osip_list_get' from incompatible pointer type
eXosip.c:1470: error: `OSIP_SYNTAXERROR' undeclared (first use in this function)
eXosip.c:1487: error: `OSIP_SUCCESS' undeclared (first use in this function)
make[2]: *** [eXosip.lo] Ошибка 1
make[2]: Leaving directory `/root/arm1/libeXosip2-3.5.0/src'
make[1]: *** [all-recursive] Ошибка 1
make[1]: Leaving directory `/root/arm1/libeXosip2-3.5.0'
make: *** [all] Ошибка 2

какова причина возникновения этих ошибок? Прошу у вас помощи.

#149109

А не пробовали установить пакет libexosip2-4?

Пётр.

#150356

Поставил libexosip2-4
Теперь при конфигурации linphone получаю уже

text
checking for eXosip2/eXosip.h... yes
checking for eXosip_subscribe_remove in -leXosip2... no
configure: error: Could not find eXosip2 library with version >= 3.0.2 !

Если я правильно понял, то libexosip2-4 > libexosip2-3.0.2, так почему же линфон не видит этого установленного пакета?

#150655
jacuba написал:
Поставил libexosip2-4
Теперь при конфигурации linphone получаю уже
text
checking for eXosip2/eXosip.h... yes
checking for eXosip_subscribe_remove in -leXosip2... no
configure: error: Could not find eXosip2 library with version >= 3.0.2 !

Если я правильно понял, то libexosip2-4 > libexosip2-3.0.2, так почему же линфон не видит этого установленного пакета?

Не знаю. ВВедите

text
dpkg -p libexosip2-4

там будет строка Version:
У меня она 3.3.0-1.

Пётр.

#150814

Еще раз проверил все пути - понял, что linphone искал хидеры не там - поправил - частично помогло.
Большое спасибо, Peter.

#150840

Я добился того, что linphone сконфигурировался и теперь приступаю к компиляции:

text
# make
...
libtool: compile:  arm-linux-gcc -DHAVE_CONFIG_H -I. -I.. -I../include/ -D_REENTRANT -I.. -g -O2 -Wall -Werror -DORTP_INET6 -MT b64.lo -MD -MP -MF .deps/b64.Tpo -c b64.c  -fPIC -DPIC -o .libs/b64.o
b64.c: In function `b64_encode_':
b64.c:209: warning: comparison is always true due to limited range of data type
b64.c:210: warning: comparison is always true due to limited range of data type
b64.c:211: warning: comparison is always true due to limited range of data type
b64.c:212: warning: comparison is always true due to limited range of data type
make[5]: *** [b64.lo] Ошибка 1
make[5]: Leaving directory `/root/arm1/linphone-3.4.3/oRTP/src'
make[4]: *** [all-recursive] Ошибка 1
make[4]: Leaving directory `/root/arm1/linphone-3.4.3/oRTP/src'
make[3]: *** [all-recursive] Ошибка 1
make[3]: Leaving directory `/root/arm1/linphone-3.4.3/oRTP'
make[2]: *** [all] Ошибка 2
make[2]: Leaving directory `/root/arm1/linphone-3.4.3/oRTP'
make[1]: *** [all-recursive] Ошибка 1
make[1]: Leaving directory `/root/arm1/linphone-3.4.3'
make: *** [all] Ошибка 2

В какую сторону копать?

#150897

Я открыл файл b64.c и закоментировал строки 209-212.
Данная проблема решилась. Спасибо.

#151005
jacuba написал:
Еще раз проверил все пути - понял, что linphone искал хидеры не там - поправил - частично помогло.
Большое спасибо, Peter.

Да, это бывает и даже не очень редко. Я тоже сталкивался.

Пётр.

#151154

Задам еще вопрос.
Компилирую linphone, получаю ошибку:

text
...
make  all-am
make[5]: Entering directory `/home/user/linphone-34/linphone-3.4.3/mediastreamer2/src'
  CC     mscommon.lo
  CC     msfilter.lo
msfilter.c: In function `get_cur_time_ns':
msfilter.c:257: error: `CLOCK_MONOTONIC' undeclared (first use in this function)
msfilter.c:257: error: (Each undeclared identifier is reported only once
msfilter.c:257: error: for each function it appears in.)
make[5]: *** [msfilter.lo] Ошибка 1
make[5]: Leaving directory `/home/user/linphone-34/linphone-3.4.3/mediastreamer2/src'
make[4]: *** [all] Ошибка 2
make[4]: Leaving directory `/home/user/linphone-34/linphone-3.4.3/mediastreamer2/src'
make[3]: *** [all-recursive] Ошибка 1
make[3]: Leaving directory `/home/user/linphone-34/linphone-3.4.3/mediastreamer2'
make[2]: *** [all] Ошибка 2
make[2]: Leaving directory `/home/user/linphone-34/linphone-3.4.3/mediastreamer2'
make[1]: *** [all-recursive] Ошибка 1
make[1]: Leaving directory `/home/user/linphone-34/linphone-3.4.3'
make: *** [all] Ошибка 2

предполагаю, что если закоментировать и эти строки, то ошибка пропадет:) но это плохое решение. От чего возникают подобные ошибки?

Войдите или зарегистрируйтесь, чтобы ответить.