Перейти к содержанию
    

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

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

 

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

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

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

...

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

...

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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 из репозитариев - проблема решилась. Большое спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

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

Изменено пользователем jacuba

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...

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

...

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

Изменено пользователем jacuba

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

# ./configure --prefix=/usr

....

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

При конфигурации самого 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'

Изменено пользователем jacuba

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

....

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

# 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 положили?

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я открыл файл b64.c и закоментировал строки 209-212.

Данная проблема решилась. Спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...