freeswitch笔记(1)-mac环境安装
freeswitch是啥就不多说了,可以简单理解为一个功能强大的纯软件实现的电话交换机(俗称:软交换)。官网地址:https://freeswitch.com/,它可以运行于windows/mac/linux,完全跨平台,而且开源免费。下面介绍mac环境的安装及遇到的坑。
前提:mac机上必须有brew,如果brew有问题(或者是很早的版本),建议参考上篇mac上homebrew重装手记.
freeswitch官方给出了二种安装方式:“从git下载源码一步步编译安装”及“下载mac Installer文件安装”。显然用安装文件一路next的方式更友好些,遇到的坑相对也更少。
一、下载macOS FreeSWITCH Installer
从freeswitch官网下载即可(目前最新的版本是1.10.2-release),下载后是一个zip包,解压开,会看到这货
二、安装
双击macOS FreeSWITCH Installer:
建议先安装Update prerequisites and FreeSWITCH,这一步会把一些依赖的东西,先update成最新的,避免后面安装时出错。
这一步的过程截图就不贴了,大致就是利用brew更新一堆东东。(注:强烈建议,先把brew的源换成国内镜像,否则那网速,等你睡醒了起床,都不一定能完成~_~)
这个完成后,再选择第一项Install FreeSWITCH,这里会遇到第1个坑:
到apple官网查了一下,大意是说安装程序及terminal终端没有获得系统控制权。
进到“系统偏好”设置,找到“安全及隐私”,把macOS FreeSWITCH Installer及终端前面的勾都选中(注:我机器上的终端换成了iTerm,如果大家用的其它terminal,这里自行调整)。然后这里可能会遇到第2个坑,刚开始我按这个设置后,重新打开Installer安装程序,还是没效果,机器重启,还是一样!然后无意把mac的系统默认语言,从中文换成了英文,然后再重启。
再次运行安装程序,居然通过了。然后就是漫长的等待,特别是最后下载各路音频文件,耗时很长,终于一切安装完成了,以为大功告成,然后兴冲冲的运行/usr/local/freeswitch/bin/freeswitch,却发现根本没这个文件!也就是说程序根本没安装成功!
郁闷的同时,无意瞄了一眼桌面,发现一堆“FreeSWITCH Intall Logs ...” 的目录
点进去看了下,原来是每个步骤的详细日志,这一点到蛮值得我们学习的
打开 07 FreeSWITCH make install这个文件,看名字就能猜出这是编译安装的,多半这里有问题,果然:
-------------------------------
? freeswitch make install
/Library/Developer/CommandLineTools/usr/bin/make install-recursive
CC src/libfreeswitch_la-switch_core_cert.lo
src/switch_core_cert.c:39:20: error: unused function 'switch_ssl_ssl_lock_callback' [-Werror,-Wunused-function]
static inline void switch_ssl_ssl_lock_callback(int mode, int type, char *file, int line)
^
src/switch_core_cert.c:49:29: error: unused function 'switch_ssl_ssl_thread_id' [-Werror,-Wunused-function]
static inline unsigned long switch_ssl_ssl_thread_id(void)
^
2 errors generated.
make[1]: *** [src/libfreeswitch_la-switch_core_cert.lo] Error 1
make: *** [install] Error 2
? freeswitch
-------------------------------
意思是说,src/switch_core_cert.c这个源文件里,有2个没用到的函数switch_ssl_ssl_lock_callback、switch_ssl_ssl_thread_id。上网查了下,其它人也遇到这个问题了,见https://github.com/signalwire/freeswitch/issues/176。
随便找个编辑工具,比如vscode或vi,打开/usr/local/src/freeswitch/src/switch_core_cert.c 这个文件
把这俩捣蛋函数注释掉,然后在终端下,cd /usr/local/src/freeswitch,再执行make install 就能通过了,最后在生成unittest单元测试时,可能会报错,先不用管。
三、运行
终端下运行下面的命令
cd /usr/local/freeswitch/bin
./freeswitch
如果能看到上面的输出,恭喜你,表示freeswitch启动成功!另外,freeswitch启动后,会占用本机的5060、8021这二个端口,可以另开一个terminal窗口,参考下图的命令检查一下:
其中5060是sip服务器的端口,各种voip客户端软件通过这个端口与freeswitch连接。而8021端口是供其它应用连接,用来监听各种事件的(后面讲esl inbound开发时,会再详细说这块) 。
最后折腾完了,如果想关闭,直接在freeswitch所在的terminal终端中,输入shutdown即可。
freeswitch笔记(1)-mac环境安装的更多相关文章
- ELK-6.5.3学习笔记–elk基础环境安装
本文预计阅读时间 13 分钟 文章目录[隐藏] 1,准备工作. 2,安装elasticsearch. 3,安装logstash. 4,安装kibana 以往都是纸上谈兵,毕竟事情也都由部门其他小伙伴承 ...
- Appium——appium之mac环境安装
一.安装brew:Homebrew是一款Mac OS平台下的软件包管理工具执行:/usr/bin/ruby -e "$(curl -fsSL https://raw.githubuserco ...
- git全程笔记(mac环境) git for mac
一.git的安装 最简单的方式就是直接用git installer安装git(从git官网上下载一个git installler就可以直接安装了),mac上有自带的git,可能版本比较低 后面显示的是 ...
- Mac环境 安装brew
一.brew官网主页上的方法: /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/insta ...
- MongoDB笔记:windows环境安装及连接本地数据库
下载MongoDB 2.4.9版 mongodb官网下载:http://www.mongodb.org/downloads 直接下载地址:http://fastdl.mongodb.org/win32 ...
- Mac环境安装非APP STORE中下载的软件,运行报错:“XXX” is damaged and can’t be opened. You should move it to the Trash. 解决办法
出现这个错误的大多数原因都是因为系统设置的问题,因为系统不信任你从其他地方下载的软件安装包,所以运行时就给你阻止了.具体的设置步骤如下: 1. 打开系统偏好设置 (System Preferences ...
- Mac下安装ElasticSearch及其插件
目录 环境介绍 安装过程 安装Kibana 环境介绍 软件版本:ElasticSearch7.0.0 Kibana7.0.0 系统环境:mac 环境 安装过程 官网下载 ElasticSearch7. ...
- Mac环境下升级gcc版本--rocksdb
前言 在mac环境下编译rocksdb,需要配置依赖的编译环境,其中有一项比较麻烦:c++编译要支持C++11,但是在mac环境安装xcode-select --install之后,已经安装有了gcc ...
- mac系统下Ruby环境安装
在我们编写代码过程中,会用到一系列的第三方开源类库,我们可以选择手动去一个个添加需要的库,但这非常麻烦.因此我们可以使用CocoaPods来帮助我们自动添加.使用CocoaPods需要先安装Ruby环 ...
- php大力力 [002节]mac php环境安装,mamp安装 ,phpMyAdmin启动
php大力力 [002节]mac php环境安装,mamp安装 ,phpMyAdmin启动 每个人机器不一样,我手头是个air book,查了一下现在最好在mac下,用mamp, mamp百科介绍 , ...
随机推荐
- 我也来说说经典面试题目-“OOM异常会导致JVM退出吗?”
经典面试题目"OOM异常会导致JVM退出吗? 我的回答是"这要分情况看,对于守护线程来说,OOM并不会导致JVM退出:对于非守护线程来说,如果某个线程捕获了OOM异常并正确进行了处 ...
- 工具 | ysoSimple
0x00 简介 ysoSimple是一款简易的Java漏洞利用工具,集成Java反序列化,Hessian反序列化,XStream反序列化,SnakeYaml反序列化,Shiro550,JSF反序列化, ...
- 设计模式之“模板方法模式(TemplateMethod)”
一.使用场景 场景1 当我们要完成在某一细节层次一致的一个过程或一系列步骤,但其个别步骤在更详细的层次上的实现可能不同时,我们通常考虑用模板方法模式来处理 例如:将子类重复声明的方法提到父类去声明,利 ...
- Unity编辑器重新编译代码
最近碰到Unity编辑器偶尔抽风,明明代码都正常的,编译却有个空报错,导致策划/美术有时候需要重启Unity,有时候需要关掉unity+删除Library/AssemblyScript目录再开unit ...
- 通过VS地址擦除系统定位缓冲区溢出问题
VS2019增加了一个名为"地址擦除系统"的功能,默认是关闭的,可以在项目"属性"-"c/c++"-"常规"中开启.在开 ...
- FreeSWITCH Jitter Buffer 技术解析与应用指南
一.概述 freeswitch是一款简单好用的VOIP开源软交换平台. Jitter Buffer(抖动缓冲器)是实时语音通信中解决网络抖动和延迟问题的核心技术.FreeSWITCH通过STFU(So ...
- C#缩放图片形成新的图片
// 加载原始Bitmap Bitmap originalBitmap = new Bitmap("C:\\Users\\Administrator\\Desktop\\test.bmp&q ...
- eclipse从安装到配置Tomcat及运行helloworld
eclipse安装 0.下载 官方地址https://www.eclipse.org/downloads/packages/ 下载那个版本大家参见下图自行取舍叭 1.安装 解压缩 推荐的解压工具7-z ...
- 玩转代码:深入GitHub,高效管理我们的“shou学”平台源代码
玩转代码:深入GitHub,高效管理我们的"shou学"平台源代码 在当今快节奏的开发世界中,有效地管理代码不仅仅是一种良好实践,更是一种必需.无论您是独立开发者还是大型团队的一员 ...
- python里的简洁操作
1.lambda匿名函数好处 精简代码,lambda省去了定义函数,map省去了写for循环过程:res=list(map(lambda x:'test' if x=='' else x,a))