Jump to content

    
Sign in to follow this  

Recommended Posts

Добрый день, возникла следующая проблема:

при попытке скомпилировать 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

 

Собственно это и вызывает затруднение, откуда такая ошибка и как можно от нее избавиться?

Заранее благодарен.

 

 

Share this post


Link to post
Share on other sites
Добрый день, возникла следующая проблема:

...

../src/.libs/libmediastreamer.so: undefined reference to `speex_echo_cancellation'

...

Собственно это и вызывает затруднение, откуда такая ошибка и как можно от нее избавиться?

Очевидно в библиотеке speex отсутствуют такие функции. Либо не та версия библиотеки, либо вы её неправильно собрали.

P.S. тему лучше перенести в OpenSource раздел

Share this post


Link to post
Share on other sites

Petka, спасибо за ответ,

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

$cd ../speex-1.1.11.1
$./configure --prefix=/home/user/armbuild --host=i686-pc-linux --target=arm-linux
--disable-static --enable-fixed-point --enable-arm-asm  
$make
$make install

 

Сейчас я поставил пакеты: libogg-ocaml, libogg-ocaml-dev, libspeex-ocaml, libspeex-ocaml-dev, libspeexdsp-dev из репозитариев - проблема решилась. Большое спасибо.

Share this post


Link to post
Share on other sites

появилась еще одна проблема: при компиляции 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

 

гугл ничего про это не знает

уважаемые, помогите разобраться.

Edited by jacuba

Share this post


Link to post
Share on other sites
...

/usr/include/bits/stdio2.h:98: undefined reference to `__fprintf_chk'

...

уважаемые, помогите разобраться.

Похоже неправильно сконфигурировали speex для кросс-компиляции. При сборке вместо uclibc тянутся хэдеры локальной (хостовой) машины, а на ней наверняка glibc.

Share this post


Link to post
Share on other sites

Проблема решилась путем установки компилятора в /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

 

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

Edited by jacuba

Share this post


Link to post
Share on other sites
Проблема решилась путем установки компилятора в /usr

 

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

# ./configure --prefix=/usr

....

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

1) ИМХО --prefix НЕ надо при кросс-компиляции прописывать в /usr пропишите куда-нить в личный /home аналогично ARM_INSTALL_TREE

2) при компиляции (make) не выдавались-ли сообщения о ненайденых incude ?

Share this post


Link to post
Share on other sites

кхм... Наверно вот здесь и таится ошибка.

Но я все равно не понимаю, как это исправить.

...
In file included from eXosip.c:25:
eXosip2.h:56:24: osip2/osip.h: Нет такого файла или каталога
eXosip2.h:57:31: osip2/osip_dialog.h: Нет такого файла или каталога
In file included from ../include/eXosip2/eXosip.h:28,
                 from eXosip2.h:59,
                 from eXosip.c:25:
../include/eXosip2/eX_setup.h:29:38: osipparser2/osip_message.h: Нет такого файла или каталога
In file included from ../include/eXosip2/eXosip.h:28,
                 from eXosip2.h:59,
                 from eXosip.c:25:
../include/eXosip2/eX_setup.h:107: error: parse error before "osip_proxy_authenticate_t"
../include/eXosip2/eX_setup.h:107: warning: no semicolon at end of struct or union
../include/eXosip2/eX_setup.h:111: error: parse error before '}' token
../include/eXosip2/eX_setup.h:200: error: parse error before '*' token
../include/eXosip2/eX_setup.h:269: error: parse error before '*' token
In file included from ../include/eXosip2/eXosip.h:29,
                 from eXosip2.h:59,
                 from eXosip.c:25:
../include/eXosip2/eX_register.h:28:37: osipparser2/osip_parser.h: Нет такого файла или каталога
In file included from ../include/eXosip2/eXosip.h:29,
                 from eXosip2.h:59,
                 from eXosip.c:25:
...

Share this post


Link to post
Share on other sites
кхм... Наверно вот здесь и таится ошибка.

Но я все равно не понимаю, как это исправить.

...
In file included from eXosip.c:25:
eXosip2.h:56:24: osip2/osip.h: Нет такого файла или каталога
...

Посмотрите с какими ключами зачускается компилятор перед выдачей таких ошибок. В ключе "-I" должны содержаться пути к необходимым хедерам. Проверьте наличие этих хедеров. Сконфигурируйте библиотеку так, что бы при компиляции эти пути указывали на необходимые каталоги.

Share this post


Link to post
Share on other sites

При конфигурации самого linphon получаю сообщение:

# ./configure --prefix=/root/armbuild --host=arm-linux --disable-static --disable-glib --enable-gnome_ui=no --disable-manual --enable-ipv6 --enable-alsa --with-osip=/armbuild/usr --with-speex=/armbuild/usr

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

Прошу меня проверить:

# cd libeXosip2-3.0.3
#  ./configure --host=arm-linux --prefix=/armbuild
...
Entering directory `/home/user/Загрузки/libeXosip2-3.0.3/src'
if /bin/bash ../libtool --tag=CC --mode=compile arm-linux-gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I../include -I/armbuild/include  -Wall -Wcast-align -Wchar-subscripts -Wformat -Winline -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wpointer-arith -DOSIP_MT -DENABLE_DEBUG -g -DENABLE_TRACE -g   -pthread -g  -MT eXosip.lo -MD -MP -MF ".deps/eXosip.Tpo" -c -o eXosip.lo eXosip.c; \
        then mv -f ".deps/eXosip.Tpo" ".deps/eXosip.Plo"; else rm -f ".deps/eXosip.Tpo"; exit 1; fi
mkdir .libs
arm-linux-gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I../include -I/armbuild/include -Wall -Wcast-align -Wchar-subscripts -Wformat -Winline -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wpointer-arith -DOSIP_MT -DENABLE_DEBUG -g -DENABLE_TRACE -g -pthread -g -MT eXosip.lo -MD -MP -MF .deps/eXosip.Tpo -c eXosip.c  -fPIC -DPIC -o .libs/eXosip.o
In file included from eXosip.c:25:
eXosip2.h:56:24: osip2/osip.h: No such file or directory
eXosip2.h:57:31: osip2/osip_dialog.h: No such file or directory

 

osip2/osip.h лежал в /armbuild/include, на всякий случай я скопировал всю папку osip2 в /usr/include

Правильно ли я сделал?

по прежнему получаю кучу сообщений типа:

eXosip.c: In function `_eXosip_transaction_init':
eXosip.c:83: warning: implicit declaration of function `osip_transaction_init'
eXosip.c:83: error: `transaction' undeclared (first use in this function)
eXosip.c:83: error: (Each undeclared identifier is reported only once
eXosip.c:83: error: for each function it appears in.)
eXosip.c:83: error: `ctx_type' undeclared (first use in this function)
eXosip.c:83: error: `osip' undeclared (first use in this function)
eXosip.c:83: error: `message' undeclared (first use in this function)
eXosip.c: At top level:
eXosip.c:101: error: parse error before "osip_transaction_t"
eXosip.c:102: warning: no previous prototype for `eXosip_transaction_find'
eXosip.c: In function `eXosip_transaction_find':
eXosip.c:105: error: `transaction' undeclared (first use in this function)
eXosip.c:106: warning: implicit declaration of function `osip_list_eol'
eXosip.c:106: error: invalid use of incomplete typedef `eXosip_t'
eXosip.c:108: error: `osip_transaction_t' undeclared (first use in this function)
eXosip.c:108: error: `tr' undeclared (first use in this function)
eXosip.c:110: error: parse error before ')' token
eXosip.c: At top level:
eXosip.c:124: error: parse error before "osip_transaction_t"
eXosip.c: In function `_eXosip_retry_with_auth':
eXosip.c:127: error: `osip_transaction_t' undeclared (first use in this function)
eXosip.c:127: error: `out_tr' undeclared (first use in this function)
eXosip.c:128: error: `tr' undeclared (first use in this function)
eXosip.c:129: error: `osip_message_t' undeclared (first use in this function)
eXosip.c:129: error: `msg' undeclared (first use in this function)
eXosip.c:130: error: `osip_event_t' undeclared (first use in this function)
eXosip.c:130: error: `sipevent' undeclared (first use in this function)
eXosip.c:134: error: `osip_via_t' undeclared (first use in this function)
eXosip.c:134: error: `via' undeclared (first use in this function)
eXosip.c:137: error: `ptr' undeclared (first use in this function)
eXosip.c:140: error: `jd' undeclared (first use in this function)
eXosip.c:152: error: `retry' undeclared (first use in this function)
eXosip.c:155: warning: implicit declaration of function `osip_message_clone'
eXosip.c:158: warning: implicit declaration of function `OSIP_TRACE'
...
eXosip.c:474: error: `osip_transaction_t' undeclared (first use in this function)
eXosip.c:474: error: `out_tr' undeclared (first use in this function)
eXosip.c:476: warning: implicit declaration of function `osip_list_get'
eXosip.c:476: error: dereferencing pointer to incomplete type
eXosip.c:478: error: dereferencing pointer to incomplete type
eXosip.c:480: error: dereferencing pointer to incomplete type
eXosip.c:482: error: dereferencing pointer to incomplete type
eXosip.c:492: error: `OSIP_ERROR' undeclared (first use in this function)
eXosip.c:500: error: invalid use of incomplete typedef `eXosip_t'
eXosip.c:500: error: dereferencing pointer to incomplete type
...
eXosip.c:1138: error: dereferencing pointer to incomplete type
eXosip.c:1143: error: dereferencing pointer to incomplete type
eXosip.c:1144: error: dereferencing pointer to incomplete type
eXosip.c:1164: warning: implicit declaration of function `osip_message_get_www_authenticate'
eXosip.c:1165: warning: implicit declaration of function `osip_message_get_proxy_authenticate'
eXosip.c:1218: error: `osip_generic_param_t' undeclared (first use in this function)
eXosip.c:1218: error: `to_tag' undeclared (first use in this function)
eXosip.c:1219: warning: implicit declaration of function `osip_from_param_get_byname'
eXosip.c:1248: error: `OSIP_INFO1' undeclared (first use in this function)
eXosip.c: At top level:
eXosip.c:1297: error: parse error before '*' token
eXosip.c:1298: warning: no previous prototype for `eXosip_update_top_via'
eXosip.c: In function `eXosip_update_top_via':
eXosip.c:1301: error: `osip_generic_param_t' undeclared (first use in this function)
eXosip.c:1301: error: `br' undeclared (first use in this function)
eXosip.c:1302: error: `osip_via_t' undeclared (first use in this function)
eXosip.c:1302: error: `via' undeclared (first use in this function)
eXosip.c:1302: error: parse error before ')' token
eXosip.c:1307: error: `OSIP_ERROR' undeclared (first use in this function)
eXosip.c:1312: warning: implicit declaration of function `osip_via_param_get_byname'
eXosip.c:1323: warning: implicit declaration of function `osip_build_random_number'
eXosip.c:1326: warning: implicit declaration of function `osip_strdup'

Edited by jacuba

Share this post


Link to post
Share on other sites
....

Прошу меня проверить:

# cd libeXosip2-3.0.3

# ./configure --host=arm-linux --prefix=/armbuild

...

arm-linux-gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I../include -I/armbuild/include -Wall -Wcast-align -Wchar-subscripts -Wformat -Winline -Wmissing-declarations -Wmissing-prototypes -Wnested-

....

eXosip2.h:56:24: osip2/osip.h: No such file or directory

....

osip2/osip.h лежал в /armbuild/include, на всякий случай я скопировал всю папку osip2 в /usr/include

Быть такого не может. вы что, прямо в корень /armbuild положили?

Даже если он там лежит компилятор не может не найти хедеров.

Share this post


Link to post
Share on other sites

Да, armbuild лежит прямо в корне.

 

Только что проверил все пути установки, понял, что хидеры linphone искал не там - поправил - частично помогло.

Спасибо, Petka, ты единственный, кто проявляет интерес к этой теме на этом форуме:)

Share this post


Link to post
Share on other sites

Я добился того, что 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

 

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

 

Share this post


Link to post
Share on other sites
Я добился того, что linphone сконфигурировался и теперь приступаю к компиляции:

...

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 .

b64.c:209: warning: comparison is always true due to limited range of data type

...

make[5]: *** [b64.lo] Ошибка 1

...

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

Ключ -Werror "превращает" варнинги в ошибки.

Тут уже надо копать снова либо в конфигурацию библиотеки (судя по ошибке надо то ли включить, то ли отключить поддержку 64 бит. Хотя я не уверен.) Либо это бага в библиотеке. Можете попробовать в makefile убрать ключи "-Werror".

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this