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百科介绍 , ...
随机推荐
- springBoot简要复习总结
Spring Boot Spring Boot 的特点 1. 独立运行的 Spring 项目 Spring Boot 可以以 jar 包的形式独立运行,Spring Boot 项目只需通过命令&quo ...
- java模块——使用 47M 的java环境运行HelloWorld
前言 我们知道,运行java程序需要jre或jdk环境,但是现在的jdk安装包已经很大了,如果我们的程序很简单,并且需要把程序发送给其他没有jdk环境的人的运行要如何做呢?如何精简我们的程序包呢? 从 ...
- Sentinel——系统规则(系统自适应保护)
目录 系统自适应保护 系统规则 系统自适应保护 Sentinel 系统自适应保护从整体维度对应用入口流量进行控制,结合应用的 Load.总体平均 RT.入口 QPS 和线程数等几个维度的监控指标,让系 ...
- 【记录】Truenas scale|NFSv4数据集的子目录或文件的ACL完全访问权限继承老是继承不了怎么回事
我遇到了数据集下新建文件夹或文件,新建的文件夹或文件没有和数据集的ACL设置相符合的情况.其根本原因是NFSv4的完全访问权限要想继承的话,它的访问设置权限要设置"用户"和&quo ...
- 【经验】博客|Windows下,一键安装和部署 hexo-admin 插件(Hexo 静态博客)
1. 在博客根目录下运行下列指令 npm install --save hexo-admin -y echo "hexo clean && hexo g -d"&g ...
- 【笔记】reko 0.10.2 反编译工具安装和使用记录|(2) user‘s guide
Reko user's guide Reko是一个二进制可执行文件的反编译器.它接受输入的一个或多个二进制可执行文件,然后反编译成高级语言.它可以在GUI shell中被交互地使用,作为一个命令行项目 ...
- 【经验】C++通过文件句柄获取文件路径(两种方式)
方法一 主要参考博客:根据文件句柄获得文件名(这篇超级清晰,就是有一点点小问题) 通过文件句柄获得文件路径(这篇不是很好用,但是思路大体是一致的) 主要思路: 根据HANDLE 创建映射文件,调用Ge ...
- TVM:使用调度模板和AutoTVM优化算子
本节学习如何使用TVM 张量表达式(TE)语言来编写调度模板,这些模板可以被autoTVM搜索到,以找到最佳调度.这个过程称为auto-Tuning,它有助于优化张量计算的自动化过程. 本节建立在如何 ...
- JS+CSS多行文本显示“更多”
本代码展示最多显示3行,每行行高16px,3行总高48px,4行总高64px 当文本行数1-3行,正常显示:当文本行数大于3行,显示"更多". CSS: #CourseDesc { ...
- odoo14忘记后台密码解决办法
直接在数据库里面修改: # 更新密码(假设用为 id 为 1,可通过 SELECT 进行查询) UPDATE res_users SET password_crypt='your new passwo ...