无法更新GCC时,编译Kaldi依赖openfst遇<string_view>缺失错误的解决方法
编译Kaldi时OpenFST因
<string_view>报错的解决方案(GCC 6.3无法更新) 问题描述
在Kaldi/tools目录下执行make编译时,OpenFST 1.8.4编译失败,核心报错为找不到<string_view>头文件。当前使用的GCC版本为gcc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516,且无法升级该版本。
报错详情:
compat.cc:22:23: fatal error: string_view: No such file or directory #include <string_view> ^ compilation terminated. Makefile:473: recipe for target 'compat.lo' failed make[3]: *** [compat.lo] Error 1 make[3]: Leaving directory '/tools/kaldi/tools/openfst-1.8.4/src/lib' Makefile:370: recipe for target 'install-recursive' failed make[2]: *** [install-recursive] Error 1 make[2]: Leaving directory '/tools/kaldi/tools/openfst-1.8.4/src' Makefile:419: recipe for target 'install-recursive' failed make[1]: *** [install-recursive] Error 1 make[1]: Leaving directory '/tools/kaldi/tools/openfst-1.8.4' Makefile:64: recipe for target 'openfst_compiled' failed make: *** [openfst_compiled] Error 2
验证测试结果:
mkhelfi1@b01:/tools/kaldi/tools$ echo '#include <string_view> > int main() { std::string_view s("test"); return 0; }' > test_sv.cpp mkhelfi1@b01:/tools/kaldi/tools$ g++ -std=c++17 test_sv.cpp -o test_sv test_sv.cpp:1:23: fatal error: string_view: No such file or directory #include <string_view> ^ compilation terminated.
解决方案
方案一:降低OpenFST版本(推荐)
OpenFST 1.8.x系列开始依赖C17标准的<string_view>,而GCC 6.3仅支持C17的早期草案(-std=c++1z),且未将<string_view>纳入标准库头文件,因此降级到兼容C++11/14的OpenFST版本是最稳妥的方案。
操作步骤:
- 进入Kaldi/tools目录,删除现有OpenFST文件:
rm -rf openfst-1.8.4 openfst-1.8.4.tar.gz - 编辑
tools/Makefile,找到OPENFST_VERSION变量,将其值修改为1.7.2 - 重新执行编译:
make
兼容性说明:Kaldi官方对OpenFST 1.7.x版本有完善的支持,不会引发后续编译或运行时的兼容性问题,是旧版本GCC环境下的标准适配方案。
方案二:修改OpenFST源码适配GCC 6.3(不推荐)
如果必须使用OpenFST 1.8.4,可以通过修改源码适配GCC 6.3的C++17支持:
- 打开
openfst-1.8.4/src/lib/compat.cc,将#include <string_view>替换为#include <experimental/string_view> - 将文件中所有
std::string_view替换为std::experimental::string_view - 在编译OpenFST时添加编译参数:
-std=c++1z -D_GLIBCXX_USE_CXX11_ABI=1
缺点:需要修改多处源码,后续Kaldi其他模块可能出现类似兼容性问题,维护成本较高,仅作为临时应急方案。
内容的提问来源于stack exchange,提问作者KHELFI Mohammed Akram
相关产品推荐
相关产品推荐

