freeswitch之源码安装

    在Ubuntu(虚拟机)上多次使用源码方式安装freeSwitch软件,由于freeSwitch在编译中依赖很多软件和工具,再加上系统版本和软件源的原因,每一次安装都遇到很多问题,花费大量时间排查,因此,本文记录一下安装过程和一些问题的解决方法。

注:文中使用操作系统版本Ubuntu 22.04.1(虚拟机),其它版本操作系统安装流程和问题解决方法类似。

一、环境安装

1.安装常用包

sudo apt install autoconf libtool-bin g++ pkg-config libtiff-dev
2. 安装libtiff-dev
sudo apt install libtiff-dev

3. 安装spandsp
# git clone https://github.com/freeswitch/spandsp.git
# cd spandsp
# ./bootstrap.sh -j
# ./configure
# make
# sudo make install
# ldconfig


4. 安装sofia-sip
no usable sofia-sip; please install sofia-sip-ua devel package or equivalent
# git clone https://github.com/freeswitch/sofia-sip.git
#cd sofia-sip
# ./bootstrap.sh -j
# ./configure
# make
# make install0
# ldconfig


5. 安装sqlite3
解决方法: sudo apt install libsqlite3-dev
          sudo apt install sqlite3

6. 安装libcurl
sudo apt install libcurl4-nss-dev

7. 安装pcre
sudo apt install libpcre3-dev

8. 安装speexdsp
sudo apt install libspeexdsp-dev

9. 安装libldns
sudo apt install libldns-dev 

10. install libks or disable mod_verto in modules.conf
禁用mod_verto

11. install libks or disable mod_signalwire
禁用mod_signalwire

12. 安装libedit-dev
sudo apt install libedit-dev

13. 安装yasm
sudo apt install yasm

14. 安装uuid和uuid-dev
sudo apt install uuid
sudo apt install uuid-dev

默认安装后,uuid.h 在/usr/include/linux/目录下,而freeswitch源码引用目录是uuid, 因此需要建立/usr/include/uuid目录

$mkdir /usr/include/uuid
$cp /usr/include/linux/uuid.h /usr/include/uuid/

15. apt install libopus-dev

16. sudo apt install libsndfile-dev

二、下载编译

2.1 下载源码
方式一:  github下载
freeSwitch源码下载地址:https://github.com/signalwire/freeswitch
git clone https://github.com/signalwire/freeswitch

注:使用git下载可能会出现异常中断,可以在网页上使用zip包下载的方式

方式二: 文件服务网站下载
也可以通过下面的网站下载源码
 http://files.freeswitch.org/releases/freeswitch/
 
方式三:  其它下载方式(如gitee等)

2.2 编译
步骤1: sudo ./bootstrap.sh

步骤2:sudo ./configure

步骤3:sudo make
   

 编译错误处理:
   1. -Werror=implicit-function-declaration错误
       示例:src/switch_apr.c:1134:9: error: implicit declaration of function ‘uuid_unparse_lower’ [-Werror=implicit-function-declaration]
        解决方法: 修改Makefile中CFLAGS一行,忽略错误
           CFLAGS = -g -O2 -Wno-error=implicit-function-declaration 

  2. -Werror=deprecated-declarations错误
  解决方法: 修改Makefile中CFLAGS一行,忽略错误
  CFLAGS = -g -O2 -Wno-error=implicit-function-declaration -Wno-error=deprecated-declarations

  3. -Werror=pedantic错误
  解决方法: 修改Makefile中CFLAGS一行,忽略错误
  CFLAGS = -g -O2 -Wno-error=implicit-function-declaration -Wno-error=deprecated-declarations
  
  4. 禁用一些模块
     比如mode_lua、mod_opus、mod_pgsql、mod_skinny等
     
2.3 安装:
    $ sudo make install

默认安装目录:/usr/local/freeswitch
voip@voip-virtual-machine:/usr/local/freeswitch$ tree -L 1
.
├── bin
├── conf
├── db
├── fonts
├── grammar
├── htdocs
├── images
├── include
├── lib
├── log
├── mod
├── recordings
├── run
└── scripts

2.4 启动freeswitch
进入到安装目录,启动程序。也可以在其它目录使用绝对路径启动
voip@voip-virtual-machine:/usr/local/freeswitch$ ./bin/freeswitch

2.5 终端注册
使用sip终端注册已有账号1000(默认密码1234,默认端口5060)成功。如果一切正常,那么恭喜你,你已经完成基本的安装了。

三、安装问题的解决思路

一般是软件或库找不到,有三种解决方法
1. 使用apt install安装
2. 从github或gitee上下载源码进行编译安装

注:freeswitch可以通过编辑module.conf文件禁用相关模块

四、安装过程中遇到的问题及解决方法

  • 1. build-requirements: autoconf not found.

解决方法: sudo apt install autoconf

  • 2. build-requirements: libtool not found.

解决方法: sudo apt install libtool-bin

  • 3. 缺少spandsp

# git clone https://github.com/freeswitch/spandsp.git
# cd spandsp
# ./bootstrap.sh -j
# ./configure
# make
# make install
# ldconfig

  • 4.缺少sofia-sip

no usable sofia-sip; please install sofia-sip-ua devel package or equivalent
# git clone https://github.com/freeswitch/sofia-sip.git
#cd sofia-sip
# ./bootstrap.sh -j
# ./configure
# make
# make install
# ldconfig

  • 5. fatal error: openssl/ssl.h: No such file or directory

解决方法: sudo apt install libssl-dev

  • 6. Package sqlite3 was not found

解决方法: sudo apt install libsqlite3-dev
                 sudo apt install sqlite3

  • 7. libcurl was not found

       解决方法: sudo apt install libcurl4-nss-dev

  • 8. Package libpcre was not found 

         解决方法: sudo apt install libpcre3-dev

  • 9. Package speex was not found 

             sudo apt install libspeexdsp-dev

  • 10. You need to either install libldns-dev or disable mod_enum in modules.conf

          解决方法: sudo apt install libldns-dev 

  • 11. You need to either install libks or disable mod_verto in modules.conf

            方法一:下载安装 https://github.com/signalwire/libks.git

            方法二:禁用mod_verto
                  sudo vim modules.conf 
                  #endpoints/mod_verto

  • 12. error: You need to either install libedit-dev

                解决方法: sudo apt install libedit-dev

  • 13. 缺少yasm

                 解决方法: sudo apt install yasm

  • 14. You need to either install signalwire-client-c

                方法一:下载编译安装: https://github.com/signalwire/signalwire-c.git

                方法二: 注释掉modules.conf中的signalwire模块

  • 15. 编译错误

                ./include/apr_general.h:33:14: error: ‘__DARWIN_NSIG’ undeclared here (not in a function)
                33 | #define NSIG __DARWIN_NSIG
注: 没找到原因,发现没有代码使用该定,直接将该行定义注释掉

  • 16. 接口过期编译错误

错误1:

In file included from src/switch_apr.c:79:
/usr/include/openssl/md5.h:49:27: note: declared here
   49 | OSSL_DEPRECATEDIN_3_0 int MD5_Init(MD5_CTX *c);
      |                           ^~~~~~~~
src/switch_apr.c:1177:9: warning: ‘MD5_Update’ is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]
 1177 |         MD5_Update(&md5_context, input, inputLen);

解决方法:关闭接口过期警告

               sudo vim Makefile
              CFLAGS = -g -O2 -Wno-error=deprecated-declarations

错误2:

skinny_protocol.c:685:65: error: array subscript ‘skinny_message_t {aka struct skinny_message}[0]’ is partly outside array bounds of ‘unsigned char[292]’ [-Werror=array-bounds]
CFLAGS = -g -O2 -Wno-error=deprecated-declarations -Wno-error=array-bounds

解决方法:关闭相应告警

               sudo vim Makefile
              CFLAGS = -g -O2  -Wno-error=array-bounds

  • 17. 没有libavformat-dev and libswscale-dev

Makefile:1481: *** You must install libavformat-dev and libswscale-dev to build mod_av.  Stop.

解决方法:
sudo apt install libavformat-dev
sudo apt install libswscale-dev

注: 如果编译时还提示找不到,需要重新执行sudo ./configure

  • 18 缺少libtiff

configure: error: "Cannot build without libtiff (does your system require a libtiff-devel package?)"

解决方法:sudo apt install libtiff-dev

  • 19 缺少uuid

src/switch_apr.c:81:10: fatal error: uuid/uuid.h: No such file or directory

解决方法:

 sudo apt install uuid

 如果依旧找不到,查看 一下uuid.h文件的位置, 在笔者环境中,如下

$ ls /usr/include/linux/uuid.h 
/usr/include/linux/uuid.h

可以看出uuid.h在linux目录下,只要相应的创建/usr/lnclude/uuid目录,并将linux/uuid.h拷贝过去可以了

  • 20 找不到uuid_xx函数

/usr/bin/ld: ./.libs/libfreeswitch.so: undefined reference to `uuid_parse'
/usr/bin/ld: ./.libs/libfreeswitch.so: undefined reference to `uuid_unparse_lower'
/usr/bin/ld: ./.libs/libfreeswitch.so: undefined reference to `uuid_generate'

解决方法:sudo apt install uuid-dev

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
要在freeswitch安装libav,您可以按照以下步骤进行操作: 1. 首先,确保您已经下载了freeswitch安装包,其中应该包含libav相关的文件,如引用所示。 2. 接下来,您需要安装cmake、libks、libuuid和signalwire-c,这些是freeswitch安装过程中所需的依赖项。 3. 下一步是安装libav,您可以使用wget命令下载libav的tar.bz2压缩包。具体命令如引用所示。确保您已经下载了适当版本的libav,并将其放置在合适的位置。 4. 解压缩libav压缩包,并按照其中的说明进行安装。通常,您需要运行configure、make和make install命令来完成安装过程。具体的安装步骤可能因libav的版本而有所不同,请参考libav的文档或官方网站获取更详细的安装指南。 5. 安装完成后,您可以使用freeswitch来调用和使用libav库来处理音视频相关的任务。具体的操作方式和代码实现取决于您的具体需求和使用场景。 希望以上信息对您有所帮助,如果您还有其他问题,请随时提问。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [freeswitch 安装全部资源包](https://download.csdn.net/download/abner_xf/85506592)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [freeswitch-1.10.7 on centos7编译安装](https://blog.csdn.net/qiuzhendezhen/article/details/127536808)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浪游东戴河

你就是这个世界的唯一

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值