我想在我的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():
修改:现在没有视频编解码器(如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
答案 0 :(得分:2)
" contrib" Ring构建的一部分是关于构建目标系统上不可用的依赖关系,主要用于在交叉编译时构建完整的工作包,或者用于没有适当依赖关系管理的系统(基本上所有操作系统除了Linux发行版)。
在contrib/native
目录中,您可以运行make list
以查看要构建的软件包列表。由于您是交叉编译的,因此您需要构建几乎所有内容。
如果你以某种方式弄乱了contrib构建,你可以安全地删除contrib/native
和contrib/{target_tuple}
(如果有的话)目录并重新开始。
libavpxx库由libav用于提供vp8和vp9视频编解码器。这不是一个硬依赖,因为你的项目没有使用视频,你可以安全地禁用它。在交叉编译vpx时我们也遇到了问题。
在contrib/src/libav/rules.mak
第70行中,DEPS_libav
定义了libav的依赖项列表。您可以从列表中删除vpx
,x264
和$(DEPS_vpx)
,因为您不使用视频。您还可以将speex和opus音频编解码器添加到列表中(它们应该在列表中但不是,请参阅this patch
作为一个例子)。
如上所述清理contrib并再次升级后,在运行make list
时,vpx
和x264
不会出现在" To-be的列表中 - 包装"。然后尝试通过运行make
来构建contrib。
如果在尝试此操作后遇到与其他软件包相同的问题,则可能会出现某种交叉编译构建路径问题(我需要更多日志/详细信息)。
作为最后的手段,对Pi本身进行编译(使用Raspbian)速度非常慢,但具有use local distro-provided dependencies的优势,并消除了交叉编译的麻烦。
祝你好运答案 1 :(得分:1)
我提供了一个自己的答案,应该记录我的步骤,这些步骤有望引导我达到预期的最终结果:
git clone https://gerrit-ring.savoirfairelinux.com/ring
cd ring
contrib
部分根据@aberaud的remarks我可以更新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后立即编译。嗯,无论如何,任何时候任何事情都可以立即编译。