Ubuntu20.04-LTS安装freeswitch步骤

前言

这个安装流程适用于Ubuntu20和22两个版本,但是,特别重要的一点,请记住:无论网上有多少安装freeswitch的文章,包括这篇,在你的电脑上操作的时候按照文章的操作步骤来,依然可能不顺利。

必须承认的是,freeswitch的安装对新手特别不友好,所以,下面的安装步骤在相同环境下,不同的人的机器上,也只能仅供参考,如果连环境都不同,大佬参考本文,估计遇到问题也能解决。小白同学的话,祝你幸运。

机器环境

  • windows 11
  • virtual box 7.0.12
  • ubuntu 20 (在22上也安装验证过,一样)

在安装这个的时候,ubuntu系统是全新安装的,除了配置相关网络策略,打通宿主机与虚拟机之间的网络和虚拟机与外部互联网的网络之外,没有进行过其它配置操作。

所以,有很多软件包需要安装,比如cmake,unzip等这些在安装过程中可能用到的,但在使用的时候发现没有的,请自行安装,下面的操作步骤不再涉及。

FreeSwitch

github: github.com/signalwire/...

用的是master分支的代码装的,安装的是1.10.10版本。

安装

下面的步骤都是切换到root用户下执行的,不用每次执行命令都要加sudo.

先装一堆工具和依赖:

shell 复制代码
apt -y install git build-essential automake autoconf libtool python zlib1g-dev libjpeg-dev libncurses5-dev         libssl-dev libpcre3-dev libspeexdsp-dev libspeex-dev libcurl4-openssl-dev libopus-dev         libsqlite3-dev libldns-dev libedit-dev

apt install pkg-config -y
apt install uuid-dev* yasm -y
apt install libtool -y
apt install libtool-bin
apt install libks* -y
apt install cmake -y
apt install libtiff* -y
apt install libpq-dev -y

下面这几个需要从源码构建,有些命令,比如cd什么的,自己视情况调整,git clone不下来的,自己去页面上下载zip包解压也行:

shell 复制代码
git clone https://github.com/signalwire/libks.git
cd libks
cmake . 
make
make install
cd ..
    
git clone https://github.com/signalwire/signalwire-c
cd signalwire-c
cmake .
make
make install
cd ..

git clone https://github.com/freeswitch/sofia-sip.git
cd sofia-sip
./bootstrap.sh
./configure
make
make install
cd ..

#安装spandsp:注意这个,在我的场景下,用最新主分支代码不行噢
git clone https://github.com/freeswitch/spandsp
cd spandsp
git checkout -b finecode20230705 0d2e6ac65e0e8f53d652665a743015a88bf048d4
./bootstrap.sh
./configure
make
make install
cd ..

curl -R -O http://www.lua.org/ftp/lua-5.3.0.tar.gz
tar xf lua-5.3.0.tar.gz
cd lua-5.3.0
make MYCFLAGS="-fPIC" linux
make install
cd ..

git clone -b release/12 https://github.com/libav/libav.git
cd libav
# 必须编译成共享库
CFLAGS=-fPIC  ./configure --enable-pic --enable-shared
make
make install
cd ..

接下来,安装 freeswitch,不要代码放到/usr/local目录下,编译构建,放到其它目录,切记,如果在/usr/local目录编译通过,最后安装的时候有问题,记得看下控制台输出,是不是这个原因。

shell 复制代码
git clone -b v1.10.10 https://github.com/signalwire/freeswitch.git
cd freeswitch
./bootstrap.sh
./configure
# 暂停一下,编辑下面这个文件, 然后找到-Werror的地方,有3处全部删除了,否则会因告警编译失败
vim src/mod/applications/mod_av/Makefile
make
make install

顺利的话,最后install成功,应该是大功告成了。

踩坑

  1. 最开始装的一堆工具和依赖,看到没,全都是半路发现缺失的
  2. 有些模块编译出问题的时候,从./bootstra.sh这一步重新开始,而不是调整后继续make
  3. 最后我在/usr/local目录下构建源码,后来install失败,调整目录,这时候重新开始也不行,要把当前会话窗口关闭,然后生意打开命令行窗口,重新开始编译,最后成功
相关推荐
kkkkkkkkkk_Z8 分钟前
新手自学嵌入式 | 学习日记:Linux驱动复习之系统移植(U-Boot篇)
linux·运维·学习
Rabitebla11 分钟前
【系统性学习笔记】Linux 权限篇(二):文件属性、权限修改与目录权限的底层逻辑
linux·c++·笔记·学习·算法
Lsetea2 小时前
curl下载HTTPS文件报23:证书验证成功与本地写入失败分层排查
linux·https·shell·ssl证书·curl
云计算练习生2 小时前
什么是文件权限?Linux 中 rwx 与数字权限的对应关系
linux·运维·服务器·操作系统·文件权限管理
叼烟扛炮2 小时前
Linux 学习笔记(十三):高效排错利器——GDB 调试器入门
linux·笔记·学习
饿了吃洗衣凝珠2 小时前
red hat day2
linux·运维·服务器
天南散修3 小时前
《802.11-2024》第08讲 · 聚合与块确认:把「一次一帧」变成「一次一批」
linux·网络·wifi·802.11
Dxy12393102163 小时前
Linux 服务器 vi 命令怎么使用
linux·运维·服务器
叼烟扛炮3 小时前
Linux 学习笔记(十五):进程的魔法 fork 与 僵尸孤儿
linux·运维·服务器
第404号工位4 小时前
插上充电宝真能偷光相册?我拆解了一台改装充电宝,实测“恶意充电”的真实攻击链
linux·python·架构