CentOS支持的不是很理想

我们尝试使用下面的步骤在CentOS上编译流式系统,但是没有成功。

StepDescription
Use Ninja to compileInstall prerequisitesum -y install git automake gcc+ gcc-c++ libtool Install Python3.7 4 How to install Python3.7 in CentOSGet git and compilegit clone https://github.com/ninja-build/ninja.gitcd ninja./configure.py --bootstrap 就可以了。然后将生成的ninja 文件,复制到/usr/bin 等系统目录中,以便于能够重启后执行到。
install GNdownload fromhttps://chrome-infra-packages.appspot.com/dl/gn/gn/linux-amd64/+/latestDownloaded file and add it to PATH environmentgn-linux-amd64.zip
Dependencyrun sudo ./build/linux/sysroot_scripts/install-sysroot.py –arch=amd641)make sure you are under /webrtc90-md/webrtc-checkout/src folder2)make sure you have give 777 for all its folderThis step will download something and take some time.If failed, please connect VPN and try again.BTW ,you could use sudo chmod R 777 webrtc-checkout/src
Compile webrtcgo to webrtc90-md/webrtc-checkout/srcrun gn gen out/CentOS64 (CentOS64 is a folder name you could use your own)或者比较完整的参数gn gen –target=x64 –args=”is_clang=false use_custom_libcxx = false use_rtti=false rtc_include_tests=false enable_iterator_debugging=true symbol_level=0 treat_warnings_as_errors=false” –ide=vs2019 out/x64/debug
Compileninja -C out/CentOS64
Add to PATHadd depot_tools folder to PATH environment PATH=”xxxx”:$PATHexport PATH
Add Libc DependenciesIn some CentOS ,we need install some dependencies for gn command (Step1)2 执行GN缺失依赖glibccurl -O http://ftp.gnu.org/gnu/glibc/glibc-2.18.tar.gztar zxf glibc-2.18.tar.gzcd glibc-2.18/mkdir buildcd build/../configure –prefix=/usr(If this step display errors like missing gcc , please install gcc via sudo yum install gcc)make -j2 (this step will take lot of time)sudo make install (please sudo when you see some permission errors)Make sure Terminal display like : Your new glibc installation seems to be ok.
Done. Made 1305 targets from 276 files in 556ms
遇到很多libg++ 或者头文件找不到的编译错误

在其余的网上帖子有些不能支持CentOS

https://www.its404.com/article/dqxiaoxiao/84942532

具体分析

总体来看,CentOS 本身是支持 WebRTC 的,但在实际开发和部署中,可能会遇到一些挑战或限制。以下是一些可能的原因和解决方案:

  1. 兼容性和依赖问题

问题

  • 软件版本:某些 WebRTC 相关的软件或库可能依赖于特定版本的系统库或工具,而这些版本在 CentOS 的官方仓库中可能不可用。
  • 库和工具:WebRTC 需要一些特定的库(如 libnice、libwebsockets、STUN/TURN 服务器等),这些库可能需要手动安装或编译。

解决方案

  • 使用 EPEL 或第三方仓库:启用 EPEL(Extra Packages for Enterprise Linux)仓库,或查找其他第三方仓库以获取所需的软件包。
  • 手动编译和安装:从源代码编译所需的库和工具,确保它们与系统环境兼容。
  1. 网络和安全配置

问题

  • 防火墙和 SELinux:CentOS 默认启用防火墙和 SELinux(Security-Enhanced Linux),这些安全措施可能会阻止 WebRTC 的正常通信。

解决方案

  • 配置防火墙:确保 WebRTC 使用的端口(如 3478、8080 等)在防火墙中开放。可以使用 firewall-cmd 命令进行配置。
  • 调整 SELinux 策略:根据需要调整 SELinux 策略,以允许 WebRTC 相关服务的正常运行。可以暂时设置 SELinux 为宽松模式进行测试,使用 setenforce 0 命令。
  1. 依赖于浏览器和客户端

问题

  • 浏览器支持:WebRTC 依赖于浏览器的实现,确保你使用的浏览器版本支持 WebRTC,并且在 CentOS 上配置得当。

解决方案

  • 更新浏览器:使用支持 WebRTC 的最新版本浏览器,如 Google Chrome、Firefox、Safari 等。确保浏览器设置和网络环境允许 WebRTC 的正常运行。
  1. 配置和优化

问题

  • 系统优化:某些 WebRTC 部署可能需要特定的系统优化(如网络配置、性能调整等),这些可能在 CentOS 环境中有所不同。

解决方案

  • 性能调优:根据 WebRTC 的需求调整系统参数,如网络带宽、内存配置等。确保系统能够处理实时通信的负载。
  1. 开发和测试环境

问题

  • 开发工具:某些开发工具或库可能在 CentOS 上不容易配置,特别是在开发阶段可能遇到问题。

解决方案

  • 使用容器化技术:使用 Docker 或其他容器化技术来创建开发和测试环境,可以简化依赖管理和环境配置。
  • 跨平台开发:在其他平台(如 Ubuntu)开发和测试,然后在 CentOS 上部署和运行,确保兼容性。

总结

虽然 CentOS 是一个稳定和可靠的操作系统,但在 WebRTC 开发和部署中可能会遇到一些特定的挑战。通过适当的配置和调优,通常可以解决这些问题,使 CentOS 成为一个有效的 WebRTC 运行环境。确保系统软件、网络配置和安全策略与 WebRTC 的需求相匹配,能够帮助顺利实现和运行 WebRTC 应用。

Ubuntu情况

在Ubuntu下是肯定可以安装的。网上资料很多不多赘述。

Debian下情况

以下是在Debian系统上的编译步骤。M90下验证。M108也同样可以。

步骤备注
复制源代码到Debian下
下载GN 命令工具,将其所在目录添加到系统PATH中。最简单的直接下载后复制到 /sbin/目录下。整个目录是Debian存放很多CMD的地方。参考 2 Debian中如何添加依赖库路径到系统PATH中下载地址https://chrome-infra-packages.appspot.com/dl/gn/gn/linux-amd64/+/latest下载该文件后解压,放在PATH中能执行到即可。
CMD中切换到webrtc-checkout/src/目录下,执行gn gen out/Default出现右侧的错误
apt-get install python后出现右侧错误那就去执行那句
还是继续出现错误。奇怪的是出现MacOS的字样,即便指定target_os=”linux”还是一样。
更新好Deps后,出现这个奇怪的测试相关的编译错误。 不知道哪里可以去掉测试的开关解决方法: 3 gmock错误 (含解决方法)
执行 gn gen out/CentOS后一切正常。此时需要使用ninja 编译。需要首先安装ninja 及其依赖

可能遇到的错误

错误libappindicator

​编辑

原因是在Debian11上,这个库的名字被修改了。

libappindicator ,修改成了下图中的第一个

​编辑

可能需要用到Boost库

  1. 下载boost zip包,自行解压
  2. 执行 /bootstrap.sh
  3. 按照输出提示执行 ./b2 输出结果,可以看到静态库等在stage目录下

​编辑

  1. 在GCC或者QT 中引入这些.a 即可。
  2. 运行时期,可能需要.so ,这个要注意。
Logo

助力广东及东莞地区开发者,代码托管、在线学习与竞赛、技术交流与分享、资源共享、职业发展,成为松山湖开发者首选的工作与学习平台

更多推荐