做好自己份内事
分类: 其他UNIX
2015-12-02 15:01:00
作者:赵晓筱
日期:2015-11-25
联系邮箱:
本文仅供参考如何在openwrt编译环境中编译集成asterisk,及保证asterisk在openwrt系统中正常运行。首先路由器的硬件环境必须要足够。
前文介绍了openwrt编译,在编译出一个可用的openwrt路由系统之后。再从openwrt官网中下载一些ipk安装使用,发现安装asterisk安装之后怎么也没有办法正常运行(openwrt安装ipk的方法在此不再介绍)。
首先我还是很支持官网的一些资料,但是在次官网给的路由系统文件不支持官网本身的asterisk,编译的openwrt也不支持官网的asterisk。本人也很是费解。
官网的源地址为:
MT7620的稳定版本ipk路径:
错误的迹象为每次asterisk加载任何一个模块的时候表面卡死,及程序没有办法正确加载模块。阅读日志发现每次程序都是停在load模块时。
个人跟踪源码发现asterisk加载模块时使用到一个函数:dlopen。每次加载模块,程序运行到此之后就不会继续运行了。发现此函数依赖dl库,而在官网中没有找到对应的dl库的ipk,并且在自己编译的及官网中的路由bin系统中也没有dl库。
最终发现需要在编译openwrt时增加配置,官网提供的不支持集成asterisk。要想支持asterisk必须自己重新编译,在编译openwrt中裁剪内核的一步中增加:
[*] Advanced configuration options (for developers) --->
[*] Toolchain Options --->
C Library implementation (Use musl) --->
(X) Use (e)glibc
(e)glibc version (eglibc 2.19) --->
(X) glibc 2.21
首先选择openwrt编译使用的是glibc,此编辑库就可以用dl库了。其次选择的是glibc的版本了。自由选择。
Network --->
Telephony --->
在配置下选择编译的asterisk版本即可。重新编译openwrt,烧录对应的路由器文件就可以了。
至于asterisk如何配置、使用本文就不再阐述了,不过个人使用的平台已经确认可以使用的。而且在文件系统中也发现了dl库。
集成asterisk可以通过修改配置文件注册两个sip分机,校验asterisk运行的正确性,可以通过命令:
asterisk –rvvv
到asterisk后台输出信息,执行命令:
Module show
看看asterisk所有的模块有无加载成功,最主要的模块为红框标记的模块需要有。这个为配置sip话机必须的模块。当然加载模块多不要紧。
asterisk配置文件的路径在/etc/asterisk。
修改配置文件sip.conf。在文件末尾增加:
点击(此处)折叠或打开
修改配置文件:extensions.conf 配置文件中[general]节点后增加
点击(此处)折叠或打开
然后最粗鲁的方法就是重启asterisk,或者直接重启路由器也行。
这样用sip客户端及注册了两个分机,就可以互相拨打了。
GOOD LUCK。