Ubuntu编译Pjproject2.6出错求助:提取Opus RTP转WAV受阻
解决Pjproject 2.6编译时x87寄存器禁用的错误
你在编译Pjproject 2.6用于提取Opus RTP数据包并转换为WAV格式的过程中,碰到了libyuv编译阶段的浮点寄存器冲突问题——这个错误在GCC 7.x版本里挺常见的,给你几个靠谱的解决办法:
方法1:直接修改libyuv的编译参数
报错根源来自libyuv的编译环节,我们可以直接给它添加浮点支持的编译flag:
- 打开路径
pjproject-2.6/third_party/build/yuv/Makefile - 在编译选项(CFLAGS/CXXFLAGS)里加上
-mfpmath=387,强制启用x87浮点寄存器支持 - 保存文件后,回到pjproject根目录重新执行
make dep && make
方法2:禁用视频模块(适合音频场景)
既然你的需求是处理音频(Opus RTP转WAV),完全不需要视频相关的libyuv依赖,直接在configure阶段关掉视频功能就行:
cd pjproject2.6/ ./configure --disable-video make dep && make
这个方法最省事,还能减少编译时间。
方法3:调整系统编译环境
如果上面的方法都不行,试试调整全局编译参数或者升级GCC:
- 先设置环境变量强制启用x87浮点:
export CFLAGS="-mfpmath=387" export CXXFLAGS="-mfpmath=387" ./configure make dep && make - 或者把GCC升级到8及以上版本,新版本对浮点寄存器的处理更友好,能避免这个问题。
等编译成功后,你就可以用Pjproject里的音频工具来完成Opus RTP数据包提取和WAV格式转换的需求了。
内容的提问来源于stack exchange,提问作者Spartacus
相关产品推荐
相关产品推荐

