1

Добрый день.
Возникла следующая проблема, при компиляции 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 - что такое не знаю, в дистрибутивах ничего подобного нет.
Прошу у вас помощи и разъяснений, уважаемые.
Заранее благодарен.

2

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

3

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

jacuba пишет:

configure: error: ./configure failed for mediastreamer2

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

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

Был, был и весь вышел...

4

Lupo Alberto пишет:

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

Кстати, да.
В репозитории такая программа есть
http://packages.debian.org/search?keywo … ection=all

5 (04.04.2011 15:50:07 отредактировано jacuba)

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

6 (05.04.2011 09:34:53 отредактировано jacuba)

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

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

$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

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

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 и получаю ошибку:

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

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

7 (06.04.2011 17:39:27 отредактировано Peter)

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

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

Пётр.

Пётр.

8 (06.04.2011 10:39:29 отредактировано jacuba)

Спасибо, Peter, я действительно не знал, что там есть файл README.arm
Все делал по этой инструкции.

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

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

$ 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 видно отовсюду, я делаю:

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

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

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

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

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

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

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

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

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

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

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

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

9

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

$ su 
Пароль: 
# 

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

10 (06.04.2011 15:12:08 отредактировано jacuba)

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

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
уважаемые, помогите разобраться.

11 (06.04.2011 17:50:39 отредактировано Peter)

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

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

Пётр.

Пётр.

12

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

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

# ./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. Скачиваю и распаковываю.

# 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

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

13

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

Пётр.

Пётр.

14 (11.04.2011 12:50:51 отредактировано jacuba)

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

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, так почему же линфон не видит этого установленного пакета?

15 (11.04.2011 21:00:34 отредактировано Peter)

jacuba пишет:

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

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, так почему же линфон не видит этого установленного пакета?

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

dpkg -p libexosip2-4

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

Пётр.

Пётр.

16

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

17

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

# 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

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

18

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

19

jacuba пишет:

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

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

Пётр.

Пётр.

20

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

...
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

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

21

в поисках решения забрел на один китайский блог
Google Chrome помог мне перевести страницу, и если я правильно понял, то там советуют закоментировать ветку else в условии, но там говорится про файл msticker.с а у меня msfilter.c, но мне то же помогло. Прошу поправить, если я понял не правильно.

не нравится мне эти операции с удалением строк из кода.
В общем ошибка пропала и появилась следующая, не помню точно содержание, но что-то про неопределенные SPEEX_PREPROCESS_GET_PSD_SIZE и SPEEX_PREPROCESS_GET_PSD. В этом же блоге было и решение - достаточно было добавить в файл mediastreamer2/src/msconf.c строки

#define SPEEX_PREPROCESS_GET_PSD_SIZE 34
#define SPEEX_PREPROCESS_GET_PSD 35

Эти ошибки больше не возникают, появляются другие, но пока все решается.

Первый раз в жизни столкнулся с кросс-компиляцией и сразу же такой геморой. Кросс-компиляция всегда так тяжело проходит или мой случай исключительный?

22 (13.04.2011 15:13:01 отредактировано jacuba)

не долго я радовался.

CXXLD  libmediastreamer.la
/usr/local/arm/3.3.2/lib/gcc-lib/arm-linux/3.3.2/../../../../arm-linux/bin/ld: cannot find -lspeexdsp
collect2: ld returned 1 exit status
make[5]: *** [libmediastreamer.la] Ошибка 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

Конфигурирую следующим образом:

./configure --prefix=/armbuild --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" --disable-video --disable-nls 
--enable-gtk_ui=no --disable-glib --enable-alsa=no

я уже ничего не понимаю, откуда почему и как?

23

Не видя системы и предыдущего резильтата, трудно сказать.
Там же есть сообщение, что не находится библиотека libspeexdsp,
вот и надо выяснить, есть ли она и где, а если её нет, то как
её получить. Там же в README.arm говорится, что дано сначала
скомпилировать этот speex.

Пётр.

Пётр.