Win10下Msys+MINGW64编译OpenFst出现libtool -no-undefined错误如何解决
问题原因分析
- 配置阶段的
cmp: command not found、diff: command not found报错是因为当前Msys环境未安装基础开发工具集,unistd.h不存在属于MinGW环境正常现象(该头文件为POSIX系统专属),这部分问题不会直接触发后续的构建终止错误。 - 最终的libtool报错是MinGW环境编译共享库的通用限制:MinGW要求编译生成动态链接库(DLL)时必须指定
-no-undefined链接参数,明确告知链接器编译阶段所有依赖符号都可被解析,不允许存在未定义符号留待运行时处理。
解决方案
先补装Msys基础依赖,解决配置阶段的工具缺失问题
打开MINGW64终端执行命令:pacman -S base-devel mingw-w64-x86_64-toolchain
根据提示完成安装即可获得cmp、diff等基础工具。修正configure配置参数,添加必要的链接标识
清空之前的编译缓存(可直接删除源码目录重新解压,或执行mingw32-make distclean),执行修正后的配置命令:./configure --enable-grm --enable-far --enable-ngram-fsts MAKE="mingw32-make" LDFLAGS="-no-undefined"
如果需要同时编译静态库,可额外添加--enable-static参数。重新执行构建
配置完成后执行构建命令即可正常编译:mingw32-make -j$(nproc)
编译完成后可执行mingw32-make install完成安装。
注意事项
全程操作需要在MINGW64终端下执行,不要使用Msys默认终端,否则会出现环境变量不匹配导致的头文件、链接库找不到问题。
内容的提问来源于stack exchange,提问作者Mai Daly
相关产品推荐
相关产品推荐

