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

使用devtoolset-8编译Azure Speech C++示例遇依赖缺失问题

解决devtoolset-8编译Azure语音示例的GLIBCXX版本依赖问题

核心原因

Azure语音SDK预编译的libMicrosoft.CognitiveServices.Speech.core.so由更高版本GCC编译,依赖的GLIBCXX版本高于devtoolset-8提供的版本,导致链接阶段出现符号缺失错误。

可行解决办法

1. 重新编译Azure语音SDK核心库

放弃预编译SDK包,下载源码用devtoolset-8重新编译:

  • 克隆SDK源码仓库到本地
  • 执行scl enable devtoolset-8 "cmake -S . -B build -DCMAKE_BUILD_TYPE=Release"配置编译环境
  • 运行scl enable devtoolset-8 "cmake --build build"完成核心库编译
  • 用自行编译的libMicrosoft.CognitiveServices.Speech.core.so替换原预编译库,再编译项目

2. 强制静态链接标准库

在Makefile的链接参数中添加-static-libstdc++,规避动态库版本不匹配问题:

  • 修改Makefile的LDFLAGS,加入-static-libstdc++
  • 重新执行scl enable devtoolset-8 "make"编译

3. 升级系统libstdc++库(谨慎操作)

若系统允许,升级libstdc++.so.6至包含GLIBCXX_3.4.22及以上版本的版本:

  • 先检查当前库版本:strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX
  • 从devtoolset-8安装目录(通常为/opt/rh/devtoolset-8/root/usr/lib64/)复制新版libstdc++.so.6到系统库目录,或创建软链接替换原库
  • 注意:此操作可能影响系统内依赖旧版本库的其他程序,需先备份原库文件

4. 用容器隔离编译环境

基于devtoolset-8创建Docker编译容器,在容器内完成编译:

  • 编写Dockerfile,以centos7/rhel7为基础镜像,安装devtoolset-8、git、cmake等工具
  • 在容器内克隆Azure语音示例与SDK源码,按方法1编译SDK和项目
  • 编译完成后导出二进制文件到本地

内容的提问来源于stack exchange,提问作者ZombieHappyBear

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 17:23:13