CentOS7.9安装Janus-gateway时遭遇C编译错误求助
解决CentOS7.9编译Janus-gateway的dtls.c编译错误
问题根源
CentOS7.9和Ubuntu18.04的系统底层依赖库(如OpenSSL、libsrtp)版本存在差异,即便gcc、make等工具版本一致,也会导致DTLS相关代码出现语法或变量未声明的编译错误。
修复步骤
升级依赖库到兼容版本
- 卸载系统自带的旧版依赖:
sudo yum remove -y libsrtp libsrtp-devel openssl openssl-devel - 编译安装libsrtp 2.3.0(Janus官方推荐版本):
wget https://github.com/cisco/libsrtp/archive/v2.3.0.tar.gz tar xfv v2.3.0.tar.gz cd libsrtp-2.3.0 ./configure --prefix=/usr --enable-openssl make shared_library && sudo make install - 编译安装OpenSSL 1.1.1w(CentOS7默认1.0.2版本存在兼容问题):
wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz tar xfv openssl-1.1.1w.tar.gz cd openssl-1.1.1w ./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl shared zlib make && sudo make install - 配置系统优先使用新OpenSSL:
echo "/usr/local/ssl/lib" | sudo tee /etc/ld.so.conf.d/openssl-1.1.1.conf sudo ldconfig export PATH=/usr/local/ssl/bin:$PATH export PKG_CONFIG_PATH=/usr/local/ssl/lib/pkgconfig:$PKG_CONFIG_PATH
- 卸载系统自带的旧版依赖:
重新配置Janus编译环境
- 清理之前的编译残留:
cd janus-gateway make clean ./autogen.sh - 指定依赖路径重新配置:
./configure --prefix=/opt/janus --enable-openssl --with-srtp=/usr - 重新编译:
make -j$(nproc)
- 清理之前的编译残留:
手动修复dtls.c变量未声明问题
如果上述步骤后仍报错变量'l'未声明,直接修改代码:- 打开
janus-gateway/src/dtls.c,找到janus_dtls_srtp_cleanup函数,在函数开头添加:GSList *l = NULL; - 保存后重新执行
make。
- 打开
消除未使用函数警告
这类警告不影响编译,若要消除,配置时添加编译参数:./configure CFLAGS="-Wno-unused-function" --prefix=/opt/janus --enable-openssl --with-srtp=/usr
验证安装
编译完成后执行安装:
sudo make install sudo make configs
启动Janus验证:
/opt/janus/bin/janus
内容的提问来源于stack exchange,提问作者萝莉w
相关产品推荐
相关产品推荐

