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环境安装的更多相关文章

  1. ELK-6.5.3学习笔记–elk基础环境安装

    本文预计阅读时间 13 分钟 文章目录[隐藏] 1,准备工作. 2,安装elasticsearch. 3,安装logstash. 4,安装kibana 以往都是纸上谈兵,毕竟事情也都由部门其他小伙伴承 ...

  2. Appium——appium之mac环境安装

    一.安装brew:Homebrew是一款Mac OS平台下的软件包管理工具执行:/usr/bin/ruby -e "$(curl -fsSL https://raw.githubuserco ...

  3. git全程笔记(mac环境) git for mac

    一.git的安装 最简单的方式就是直接用git installer安装git(从git官网上下载一个git installler就可以直接安装了),mac上有自带的git,可能版本比较低 后面显示的是 ...

  4. Mac环境 安装brew

    一.brew官网主页上的方法: /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/insta ...

  5. MongoDB笔记:windows环境安装及连接本地数据库

    下载MongoDB 2.4.9版 mongodb官网下载:http://www.mongodb.org/downloads 直接下载地址:http://fastdl.mongodb.org/win32 ...

  6. Mac环境安装非APP STORE中下载的软件,运行报错:“XXX” is damaged and can’t be opened. You should move it to the Trash. 解决办法

    出现这个错误的大多数原因都是因为系统设置的问题,因为系统不信任你从其他地方下载的软件安装包,所以运行时就给你阻止了.具体的设置步骤如下: 1. 打开系统偏好设置 (System Preferences ...

  7. Mac下安装ElasticSearch及其插件

    目录 环境介绍 安装过程 安装Kibana 环境介绍 软件版本:ElasticSearch7.0.0 Kibana7.0.0 系统环境:mac 环境 安装过程 官网下载 ElasticSearch7. ...

  8. Mac环境下升级gcc版本--rocksdb

    前言 在mac环境下编译rocksdb,需要配置依赖的编译环境,其中有一项比较麻烦:c++编译要支持C++11,但是在mac环境安装xcode-select --install之后,已经安装有了gcc ...

  9. mac系统下Ruby环境安装

    在我们编写代码过程中,会用到一系列的第三方开源类库,我们可以选择手动去一个个添加需要的库,但这非常麻烦.因此我们可以使用CocoaPods来帮助我们自动添加.使用CocoaPods需要先安装Ruby环 ...

  10. php大力力 [002节]mac php环境安装,mamp安装 ,phpMyAdmin启动

    php大力力 [002节]mac php环境安装,mamp安装 ,phpMyAdmin启动 每个人机器不一样,我手头是个air book,查了一下现在最好在mac下,用mamp, mamp百科介绍 , ...

随机推荐

  1. qwen3 惊喜发布,用 ollama + solon ai (java) 尝个鲜

    qwen3 惊喜发布了,帅!我们用 ollama 和 solon ai (java) 也来尝个鲜. 1.先用 ollama 拉取模型 听说,在个人电脑上用 4b 的参数,效果就很好了. ollama ...

  2. Java--利用打印流(PrintStream)输出信息

    package demo; import java.io.File; import java.io.FileOutputStream; import java.io.PrintStream; /** ...

  3. K8s新手系列之ReplicaSet资源

    概述 官网地址:https://kubernetes.io/zh-cn/docs/concepts/workloads/controllers/replicaset/ ReplicaSet简称rs,其 ...

  4. Web前端入门第 45 问:CSS 变量 var() 轻松实现主题换肤功能

    HELLO,这里是大熊的前端开发笔记. 曾经主题切换功能可以作为软件中亮眼的卖点存在,毕竟那时候要实现换肤可不容易,一套主题一套样式,这代码的重复率嗖嗖嗖的就涨上去了~~当然也可以借助 CSS 预编译 ...

  5. HarmonyOS NEXT实战:高仿墨迹天气开发手记(附源码)

    老余说3月份的神秘产品是为纯血鸿蒙而生的一款全新形态的手机,别人想象不到的手机产品,这次的保密工作真是非常到位,让人十分期待. 闲言少叙,今天为大家分享新年的第一个实战项目,高仿墨迹天气 这个项目中有 ...

  6. vue3 基础-Vuex 全局数据状态管理

    针对页面间, 组件间的数据共享问题, Vue 提供一个数据管理框架 Vuex, 早期主要是用于 Vue2 , 而现在用 Vue3 也是可以正常使用, 但在 Composition API 下则会感到这 ...

  7. 操作系统 -- linux初始化(上):GRUB与vmlinuz的结构

    本节树立启动的整体流程,重点解读Linux上GRUB是怎样启动,以及内核里的"实权人物"-- vmlinuz内核文件是如何产生和运转的. 全局流程 在机器加电后,BIOS会进行自检 ...

  8. 单服务器高性能模式:Reactor 与Proactor

    极客时间:<从 0 开始学架构>:单服务器高性能模式:Reactor 与Proactor 1.引言 单服务器高性能的 PPC 和 TPC 模式,它们的优点是实现简单,缺点是都无法支撑高并发 ...

  9. 在Matlab中如何计算决定系数R^2和相关系数r

    Problem 当你使用 polyfit 函数进行多项式拟合之后,你希望计算决定系数或者相关系数看看拟合效果如何.聪明的你肯定觉得聪明的 Matlab 的 polyfit 函数的返回值中会有 \(R^ ...

  10. 一个开源免费、功能丰富的 WPF 自定义控件资源库

    前言 今天大姚给大家分享一个开源免费(MIT license).功能丰富的 WPF 自定义控件资源库:WPF-ControlBase. WPF 介绍 WPF 是一个强大的桌面应用程序框架,用于构建具有 ...