ubuntu 下 freeswitch 安装及启动报错解决

http://files.freeswitch.org/releases/freeswitch/ 

编译的过程中会遇到许多缺少库的问题,先列出来,不然没添加一个库,就要重新configure

sudo apt install
libspeexdsp-dev
libcurl3-dev
libsqlite3-dev
ibspeexdsp-dev
libldns-dev
libedit-dev
libtiff5-dev
yasm 
libavformat-dev
libswscale-dev
libavresample-dev
libopus-dev
libpq-dev
liblua5.3-dev
uuid uuid-dev 
libsndfile1-dev

需要源码安装的
libks
cmake  (或者install的版本高于3.7.2)
signalwire-client-c

1-从上面的网址查看要下载的版本 

2-然后解压

进入解压后的目录 开始安装

3-./configure -prefix=/usr/local/freeswitch

可能遇到的缺少的库 (可能不同源 名字不同)

libspeexdsp-dev

libcurl3-dev

libsqlite3-dev

sudo apt install libspeexdsp-dev

sudo apt install libldns-dev

sudo apt install libedit-dev

sudo apt install libtiff5-dev

4-make

可能缺少的库

sudo apt install yasm 

sudo apt install libavformat-dev

1) 报错: (CRYPTO_MEM_CHECK_ON 这个变量在openssl的头文件)

 

src/switch_core_cert.c:278:2: error: implicit declaration of function ‘CRYPTO_mem_ctrl’ [-Werror=implicit-function-declaration]
  CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON);
  ^
src/switch_core_cert.c:278:18: error: ‘CRYPTO_MEM_CHECK_ON’ undeclared (first use in this function)
  CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON);
                  ^
src/switch_core_cert.c:278:18: note: each undeclared identifier is reported only once for each function it appears in
src/switch_core_cert.c: In function ‘mkcert’:
src/switch_core_cert.c:376:3: error: ‘RSA_generate_key_ex’ is deprecated [-Werror=deprecated-declarations]
   RSA_generate_key_ex(rsa, bits, BN_value_RSA_F4, NULL);

可以看一下Makefile里面openssl的路径是否正确   或者库是否有问题

修改Make file -将一deprecated-declarations错误转为waring 不报错。
          openssl_CFLAGS = -I/usr/local/ssl/include -DHAVE_OPENSSL -Wno-deprecated-declarations  -Wno-unused-value

2) 报错

      Entering directory '/home/chry/workspace/opensource/freeswitch-1.10.3.-release/src/mod/applications/mod_av'
             Makefile:1442: *** You must install libavformat-dev to build mod_av.  Stop.

install libavformat-dev (如果还报错,重新configure)

3)报错

      avformat.c:42:32: fatal error: libswscale/swscale.h

sudo apt install libswscale-dev

4)类似错误 继续instll

   libavresample-dev

   libopus-dev

   libpq-dev

5)lua.h

sudo apt install liblua5.3-dev

cd ~ /freeswitch-1.10.3.-release/src/mod/languages/mod_lua下 

cp /usr/include/lua5.3/*.h . 

sudo ln -s /usr/lib/x86_64-linux-gnu/liblua5.3.so /usr/lib/x86_64-linux-gnu/liblua.so  (编译找的是lua名字 )

6) libks 这个比较麻烦

git clone https://github.com/signalwire/libks.git  

--装cmake    但是 CMake 3.7.2 or higher is required  ,所以最好源码下了安装 

               cmake --prefix=/usr/local/libks .    // make  //sudo make install

               install uuid uuid-dev 

--装signalwire-client-c    git clone https://github.com/signalwire/signalwire-c.git

7)libsndfile-dev 

sudo apt install libsndfile1-dev

5-sudo make install

 

6-配置环境变量

     /etc/ld.so.conf.d

     PATH= /usr/local/ffmpeg/bin

     export LD_LIBRARY_PATH=/usr/local/ssl/lib

     使全局可执行freeswitch

7-启动   siudo freeswitch

ERROR: Failed to set SCHED_FIFO scheduler (Operation not permitted)   ----如果freeswitch 会报这个错
       ERROR: Could not set nice level
       Cannot open pid file /usr/local/freeswitch/var/run/freeswitch/freeswitch.pid.

sudo ln -s /usr/local/freeswitch/bin/fs_cli  /usr/bin/  -------要用sudo启动,并且设置任意路径可以启动
sudo ln -s /usr/local/freeswitch/bin/freeswitch  /usr/bin/ 


sudo ln -s /usr/local/ssl/lib/libssl.so.1.1 /usr/lib/libssl.so.1.1 ------------这个是报少库的操作
sudo ln -s /usr/local/ssl/lib/libcrypto.so.1.1 /usr/lib/libcrypto.so.1.1

 

 

 

 

 

<think>嗯,用户遇到了一个关于FreeSWITCH的错误,提示缺少libspandsp.so.3这个共享库。首先,我需要确认这个问题的常见原因和解决方法。通常,这类错误是由于系统中没有安装对应的库文件,或者库的版本不兼容导致的。 首先,我应该考虑用户是否已经安装了libspandsp库。可能的情况是用户没有安装,或者安装的版本不正确。比如,有些系统可能默认安装的是更新的版本,而FreeSWITCH需要的是较旧的版本,比如libspandsp3而不是libspandsp2。这时候,用户可能需要从源代码编译安装,或者寻找包含该库的软件包。 接下来,不同Linux发行版的包管理工具不同,需要区分Debian/Ubuntu和RHEL/CentOS等。例如,在Debian/Ubuntu上,可以尝试安装libspandsp3,而在CentOS上可能需要启用EPEL仓库后再安装。如果官方仓库中没有对应的包,用户可能需要手动下载或编译安装。 另外,安装后可能需要更新动态链接库缓存,使用ldconfig命令。如果库文件安装到了非标准路径,还需要配置LD_LIBRARY_PATH环境变量,或者在/etc/ld.so.conf.d/中添加路径。 还有可能用户之前安装过不同版本的库,导致冲突。这时候需要检查是否有多余的版本,并确保正确的版本被正确链接。 最后,如果所有方法都无效,建议用户重新安装FreeSWITCH,或者在社区寻求帮助,确认是否有已知的问题或兼容性注意事项。</think>遇到 `freeswitch: error while loading shared libraries: libspandsp.so.3` 错误时,说明系统缺少 FreeSWITCH 依赖的共享库 `libspandsp`。以下是逐步解决方案: --- ### **1. 问题原因** - **直接原因**:FreeSWITCH 运行时需要动态链接库 `libspandsp.so.3`,但系统中未安装或路径配置错误。 - **深层原因**: - 未安装 `libspandsp` 库。 - 安装了库但版本不匹配(如库文件名为 `libspandsp.so.2`)。 - 库文件路径未加入系统链接配置。 --- ### **2. 解决方法** #### **步骤 1:尝试安装 libspandsp** 根据不同 Linux 发行版选择对应命令: - **Debian/Ubuntu**: ```bash sudo apt-get update sudo apt-get install libspandsp3 ``` - **RHEL/CentOS**: ```bash sudo yum install epel-release # 若未启用 EPEL 仓库 sudo yum install spandsp ``` - **Fedora**: ```bash sudo dnf install spandsp ``` - **Arch Linux**: ```bash sudo pacman -S spandsp ``` #### **步骤 2:手动编译安装(若仓库无对应版本)** 1. 下载源码: ```bash wget https://www.soft-switch.org/downloads/spandsp/spandsp-3.0.0.tar.gz tar -xzvf spandsp-3.0.0.tar.gz cd spandsp-3.0.0 ``` 2. 编译安装: ```bash ./configure make sudo make install ``` 3. 更新库路径: ```bash sudo ldconfig ``` #### **步骤 3:验证库文件是否存在** 检查库文件是否在标准路径中: ```bash find /usr -name "libspandsp.so.3" ``` - 若输出为空,表示未安装成功。 - 若找到路径但 FreeSWITCH报错,需手动配置路径(见步骤4)。 #### **步骤 4:配置动态链接库路径** - **临时生效**: ```bash export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH ``` - **永久生效**: 1. 创建配置文件: ```bash sudo sh -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/spandsp.conf' ``` 2. 更新缓存: ```bash sudo ldconfig ``` --- ### **3. 补充说明** - **版本兼容性**:某些系统(如 Ubuntu 22.04)默认提供 `libspandsp.so.2`,需手动降级或编译旧版本。 - **重新安装 FreeSWITCH**:若仍报错,尝试重新编译 FreeSWITCH 并指定库路径: ```bash ./configure --with-spandsp=/usr/local/lib make && sudo make install ``` --- ### **4. 验证修复** 重启 FreeSWITCH 并检查是否正常启动: ```bash sudo systemctl restart freeswitch journalctl -u freeswitch -n 50 --no-pager ``` 若问题依旧,建议查阅 FreeSWITCH 社区或提交日志文件进一步排查。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值