• Ubuntu20.04 下编译和运行 FreeSWITCH的问题汇总


    1. Ubuntu20.04 下编译和运行 FreeSWITCH的问题汇总

    1.1. 环境

    1.2. 结论

    根据配置和编译过程中的错误提示,基本上就是一些依赖库的缺失问题,根据提示给出的依赖库及其版本要求,只要能在apt源中有可用的直接安装,不然就下载对应的库手动编译安装。

    由于笔者的机器系统环境之前可能已经存在一些开发库,下文中列出的问题可能未涵盖其他可能的情况,具体情况需要对照各类日志排查解决。

    1.2.1. 可以直接通过apt源安装的依赖库

    apt install libpq-dev libspeex-dev libspeexdsp-dev libldns-dev libedit-dev libavformat-dev libswscale-dev liblua5.2-dev libopus-dev libsndfile-dev libpng-dev
    

    1.2.2. 其他需要手动下载源码编译和安装的库

    1.3. 配置问题

    在源码根目录中执行

    ./bootstrap.sh
    

    因此系统中需要安装有 autotool 工具链。

    生成configure文件后执行

    ./configure
    

    这一步可能会出现以下问题:

    1.3.1. 缺少 PostgreSQL 库

    apt install libpq-dev
    

    1.3.2. 缺少 spandsp 库

    因为 freeswitch 版本比较新,需要的 spandsp 库版本是3,在 apt 源中的库版本是2,不满足要求,需要手动下载 spandsp源码编译(可能需要依赖库 libtiff-dev,可以在apt源中直接安装)并安装。

    切换到git提交:e59ca8f (HEAD) Fix crash when FCD frame has bad length but CRC is OK.

    依次执行以下命令

    git checkout e59ca8f
    ./bootstrap.sh
    ./configure
    make && make install
    

    1.3.3. 缺少 sofia-sip-ua 库

    因为 freeswitch 要求的这个依赖库的版本需要在1.13.12及以上版本,apt源中版本为1.12.11,无法满足要求,因此也需要手动下载sofia-sip源码包编译并安装。

    创建对应版本的新分支,并编译安装。

    git checkout -b 1.13.12 v1.13.12
    ./bootstrap.sh
    ./configure
    make && make install
    

    1.3.4. 缺少 speex、speexdsp 库

    apt install libspeex-dev libspeexdsp-dev
    

    1.3.5. 缺少 ldns 库

    apt install libldns-dev
    

    1.3.6. 缺少 libks 库

    下载并安装 libks-dev,版本在1.8.2及以上即可。

    必须要在源码根目录下cmake,不能创建临时文件夹编译,否则安装时会报错!

    git checkout -b 1.8.2 v.1.8.2
    cmake -DCMAKE_BUILD_TYPE=Release .
    make && make install
    

    1.3.7. Signalwire 模块缺失

    freeswitch中的这个模块是用于和Signalwire云服务通信相关的,我用不到,所以直接在freeswitch源码根目录下的 modules.conf 中禁用该模块即可。

    同时,在后续运行freeswitch时也要在 conf/autoload_configs/modules.conf.xml中注释掉

    1.3.8. 缺少 libedit 库

    apt install libedit-dev
    

    1.4. 编译问题

    在上一步配置通过后,编译时仍然会遇到一些依赖错误,因此这一步可以在编译前都解决掉,再从配置步骤开始编译和安装。

    1.4.1. mod_av 编译报错

    缺少依赖库 avformatswscale,这两个库属于ffmpeg组件。可以直接在apt源中获取安装。

    apt install libavformat-dev libswscale-dev
    

    1.4.2. lua.h 头文件查找失败

    因为我系统中安装的是lua5.3,但是freeswitch-1.10.9中会查找lua5.0、lua5.1、lua5.2,而lua5.3即使安装也无法识别,正好apt源中也有lua5.2的版本可以安装。

    apt install liblua5.2-dev
    

    1.4.3. 缺少 opus 库

    apt install libopus-dev
    

    1.4.4. 缺少 sndfile 库

    apt install libsndfile-dev
    

    1.5. 安装问题

    上一步编译成功后,会出现安装提示:

     +---------- FreeSWITCH Build Complete ----------+
     + FreeSWITCH has been successfully built.       +
     + Install by running:                           +
     +                                               +
     +                make install                   +
     +                                               +
     + While you're waiting, register for ClueCon!   +
     + https://www.cluecon.com                       +
     +                                               +
     +-----------------------------------------------+
    

    按照提示安装完成后,会出现安装声音文件的提示:

     +---------- FreeSWITCH install Complete ----------+
     + FreeSWITCH has been successfully installed.     +
     +                                                 +
     +       Install sounds:                           +
     +       (uhd-sounds includes hd-sounds, sounds)   +
     +       (hd-sounds includes sounds)               +
     +       ------------------------------------      +
     +                make cd-sounds-install           +
     +                make cd-moh-install              +
     +                                                 +
     +                make uhd-sounds-install          +
     +                make uhd-moh-install             +
     +                                                 +
     +                make hd-sounds-install           +
     +                make hd-moh-install              +
     +                                                 +
     +                make sounds-install              +
     +                make moh-install                 +
     +                                                 +
     +       Install non english sounds:               +
     +       replace XX with language                  +
     +       (ru : Russian)                            +
     +       (fr : French)                             +
     +       ------------------------------------      +
     +                make cd-sounds-XX-install        +
     +                make uhd-sounds-XX-install       +
     +                make hd-sounds-XX-install        +
     +                make sounds-XX-install           +
     ...
    

    直接安装最高质量的声音文件,这会同时安装其他质量的声音文件,这个过程会从freeswitch官方网站上下载声音文件并解压到安装目录的sound子目录下。

    make cd-sounds-install
    

    1.6. 运行问题

    1.6.1. 配置修改

    index b5a58d1..d77f585 100644
    --- a/conf/autoload_configs/modules.conf.xml
    +++ b/conf/autoload_configs/modules.conf.xml
    @@ -50,7 +50,7 @@
         
     
         
    -    
    +    
         
         
         
    diff --git a/conf/sip_profiles/internal.xml b/conf/sip_profiles/internal.xml
    index eb07779..aa8f768 100644
    --- a/conf/sip_profiles/internal.xml
    +++ b/conf/sip_profiles/internal.xml
    @@ -135,6 +135,11 @@
         
     
     
    +    
    +    
    +    
    +    
    +
         
         
     
    @@ -293,8 +298,9 @@
              auto                  - Use guessed ip.
              auto-nat              - Use ip learned from NAT-PMP or UPNP
         -->
    -    
    -    
    +    
    +    
    +    
     
         
         
    diff --git a/conf/vars.xml b/conf/vars.xml
    index 8948d17..be9ab07 100644
    --- a/conf/vars.xml
    +++ b/conf/vars.xml
    @@ -12,7 +12,7 @@
     
            WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
       -->
    -  
    +