You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CentOS7.9安装Janus-gateway时遭遇C编译错误求助

解决CentOS7.9编译Janus-gateway的dtls.c编译错误

问题根源

CentOS7.9和Ubuntu18.04的系统底层依赖库(如OpenSSL、libsrtp)版本存在差异,即便gcc、make等工具版本一致,也会导致DTLS相关代码出现语法或变量未声明的编译错误。

修复步骤

  1. 升级依赖库到兼容版本

    • 卸载系统自带的旧版依赖:
      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
      
  2. 重新配置Janus编译环境

    • 清理之前的编译残留:
      cd janus-gateway
      make clean
      ./autogen.sh
      
    • 指定依赖路径重新配置:
      ./configure --prefix=/opt/janus --enable-openssl --with-srtp=/usr
      
    • 重新编译:
      make -j$(nproc)
      
  3. 手动修复dtls.c变量未声明问题
    如果上述步骤后仍报错变量'l'未声明,直接修改代码:

    • 打开janus-gateway/src/dtls.c,找到janus_dtls_srtp_cleanup函数,在函数开头添加:
      GSList *l = NULL;
      
    • 保存后重新执行make。
  4. 消除未使用函数警告
    这类警告不影响编译,若要消除,配置时添加编译参数:

    ./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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 11:12:37