安装" ring.cx SIP客户端"在Raspberry PI上

时间:2015-04-18 08:17:02

标签: python c++ raspberry-pi sip headless

情况

我想在我的Raspberry Pi上运行基于终端的(无头)SIP呼叫,我已经尝试使用linphone:

RaspberryPI: Making SIP outbound calls using linphonec or an alternative SIP soft phone

由于我目前卡在那里,我想尝试另一个选项SFLPhone。他们向我指出ring软件项目,它提供了一个守护进程dring,它允许使用脚本界面进行SIP调用:

  

实际上,守护程序可以独立运行并使用DBus API进行控制。

     

请注意,项目已重命名为“Ring”(版本已升至2.x)。实验包可在http://ring.cx/en/documentation/linux-installation获得   Ring的一大特色   2.x是可选的“DHT”帐户类型,允许在没有任何SIP服务器的情况下进行呼叫。   还有许多其他增强功能,如ICE支持,UPnP支持,稳定性改进等。   (注意客户端正在重写(GTK3,Qt5),并且有一个新的OS X客户端,它们还没有完整的特性并且处于大量开发中。)

     

新守护程序dring源Git repo URI为:https://gerrit-ring.savoirfairelinux.com/ring。   DBus API与以前大致相同。在tools/dringctrl目录中,您将找到我们用于测试的示例python客户端(使用python3-dbus)。

     

我们愿意修复您可能发现的任何错误,守护程序bugtracker就在这里:https://projects.savoirfairelinux.com/projects/ring-daemon/issues   另请查看https://projects.savoirfairelinux.com/projects/ring/wiki以获取构建指令等。

     

关心嵌入式项目,祝你好运,   A. B。

编译依赖项

我尝试编译项目的依赖项,如README中所述:

git clone https://gerrit-ring.savoirfairelinux.com/ring
cd ring

首先编译依赖项

cd ../contrib/
rm -fr native/ && mkdir native
cd native
../bootstrap
make

我收到了这个错误:

libvpx.webm-4640a0c4804b/third_party/googletest/src/include/gtest/gtest.h
mv libvpx-4640a0c4804b49f1870d5a2d17df0c7d0a77af2f libvpx && touch libvpx
cd libvpx && CROSS= ./configure --target=armv7-linux-gcc \
    --as=yasm --disable-docs --disable-examples --disable-unit-tests --disable-install-bins --disable-install-docs --enable-realtime-only --enable-error-concealment --disable-runtime-cpu-detect --disable-webm-io --enable-pic --prefix=/home/pi/ring/contrib/arm-linux-gnueabihf
  disabling docs
  disabling examples
  disabling unit_tests
  disabling install_bins
  disabling install_docs
  enabling realtime_only
  enabling error_concealment
  disabling runtime_cpu_detect
  disabling webm_io
  enabling pic
Configuring selected codecs
  enabling vp8_encoder
  enabling vp8_decoder
  enabling vp9_encoder
  enabling vp9_decoder
Configuring for target 'armv7-linux-gcc'
  enabling armv7
  enabling neon
  enabling neon_asm
  enabling media
Unable to invoke compiler: arm-none-linux-gnueabi-gcc  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64

Configuration failed. This could reflect a misconfiguration of your
toolchains, improper options selected, or another problem. If you
don't see any useful error messages above, the next step is to look
at the configure error log file (config.log) to determine what
configure was trying to do when it died.
../../contrib/src/vpx/rules.mak:105: recipe for target '.vpx' failed
make: *** [.vpx] Error 1

编译环

尽管编译依赖项失败,但我确实尝试编译ring:

git clone https://gerrit-ring.savoirfairelinux.com/ring
cd ring
./autogen.sh
./configure
make
make install

这导致以下错误:

checking for PJPROJECT... no
configure: error: Missing pjproject files
pi@phone ~/ring $     make
make: *** No targets specified and no makefile found.  Stop.
pi@phone ~/ring $     make install
make: *** No rule to make target 'install'.  Stop.

所以目前我被困住了,我担心自己无法超越the current state of my project():

the-phone

修改:现在没有视频编解码器(如aberaud建议)我遇到以下错误:

/bin/bash ../libtool  --tag=CXX   --mode=compile g++ -DHAVE_CONFIG_H -I. -I..  -I../include/opendht -I/home/pi/sip-desaster/ring/contrib/arm-linux-gnueabihf/include -fPIC -I/home/pi/sip-desaster/ring/contrib/arm-linux-gnueabihf/include  -g -fPIC -O3 -std=c++0x -I/home/pi/sip-desaster/ring/contrib/arm-linux-gnueabihf/include  -g -fPIC -O3 -std=c++0x -c -o libopendht_la-dht.lo `test -f 'dht.cpp' || echo './'`dht.cpp
libtool: compile:  g++ -DHAVE_CONFIG_H -I. -I.. -I../include/opendht -I/home/pi/sip-desaster/ring/contrib/arm-linux-gnueabihf/include -fPIC -I/home/pi/sip-desaster/ring/contrib/arm-linux-gnueabihf/include -g -fPIC -O3 -std=c++0x -I/home/pi/sip-desaster/ring/contrib/arm-linux-gnueabihf/include -g -fPIC -O3 -std=c++0x -c dht.cpp  -fPIC -DPIC -o libopendht_la-dht.o
In file included from ../include/opendht/dht.h:29:0,
                 from dht.cpp:27:
../include/opendht/infohash.h:58:22: error: expected initializer before ‘:’ token
dht.cpp:3105:1: error: expected ‘}’ at end of input
Makefile:386: recipe for target 'libopendht_la-dht.lo' failed
make[2]: *** [libopendht_la-dht.lo] Error 1
make[2]: Leaving directory '/home/pi/sip-desaster/ring/contrib/native/opendht/src'
Makefile:395: recipe for target 'install-recursive' failed
make[1]: *** [install-recursive] Error 1
make[1]: Leaving directory '/home/pi/sip-desaster/ring/contrib/native/opendht'
../../contrib/src/opendht/rules.mak:28: recipe for target '.opendht' failed
make: *** [.opendht] Error 2

3 个答案:

答案 0 :(得分:2)

的Contrib

" contrib" Ring构建的一部分是关于构建目标系统上不可用的依赖关系,主要用于在交叉编译时构建完整的工作包,或者用于没有适当依赖关系管理的系统(基本上所有操作系统除了Linux发行版)。

contrib/native目录中,您可以运行make list以查看要构建的软件包列表。由于您是交叉编译的,因此您需要构建几乎所有内容。

如果你以某种方式弄乱了contrib构建,你可以安全地删除contrib/nativecontrib/{target_tuple}(如果有的话)目录并重新开始。

libvpx

libavpxx库由libav用于提供vp8和vp9视频编解码器。这不是一个硬依赖,因为你的项目没有使用视频,你可以安全地禁用它。在交叉编译vpx时我们也遇到了问题。

contrib/src/libav/rules.mak第70行中,DEPS_libav定义了libav的依赖项列表。您可以从列表中删除vpxx264$(DEPS_vpx),因为您不使用视频。您还可以将speex和opus音频编解码器添加到列表中(它们应该在列表中但不是,请参阅this patch 作为一个例子)。

如上所述清理contrib并再次升级后,在运行make list时,vpxx264不会出现在" To-be的列表中 - 包装"。然后尝试通过运行make来构建contrib。

如果在尝试此操作后遇到与其他软件包相同的问题,则可能会出现某种交叉编译构建路径问题(我需要更多日志/详细信息)。

作为最后的手段,对Pi本身进行编译(使用Raspbian)速度非常慢,但具有use local distro-provided dependencies的优势,并消除了交叉编译的麻烦。

祝你好运

答案 1 :(得分:1)

我提供了一个自己的答案,应该记录我的步骤,这些步骤有望引导我达到预期的最终结果:

下载资源

git clone https://gerrit-ring.savoirfairelinux.com/ring
cd ring

构建contrib部分

根据@aberaudremarks我可以更新contrib/src/libav/rules.mak并删除所有与视频相关的依赖项(请记住我无头):

所以我改变了第70行

DEPS_libav = zlib x264 vpx $(DEPS_vpx)

DEPS_libav = zlib opus speex

现在构建contrib部分。

cd ../contrib/
rm -fr native/ && mkdir native
cd native
../bootstrap
make

答案 2 :(得分:0)

我试图编译contrib时遇到同样的错误。

我使用的Raspbian版本附带了旧版本的gcc编译器4.6版。升级到4.8后立即编译。嗯,无论如何,任何时候任何事情都可以立即编译。