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

Linux环境下使用Lex和Yacc编译解析程序时出现/usr/bin/ld: cannot find -ly错误的解决求助

解决Lex/Yacc编译时cannot find -ly的错误

我之前也碰到过一模一样的问题,这个错误的核心是链接器找不到Yacc对应的库文件liby.a或liby.so,下面给你几个可行的解决思路:

1. 确认系统中Yacc的实际替代工具

很多Linux发行版并没有预装原生的Yacc,而是用Bison(GNU的Yacc兼容工具)来替代。这时候链接参数-ly就不适用了,需要换成Bison的库参数:

  • 修改编译命令为:
    gcc -o C_PARSER lex.yy.c y.tab.c -lbison -ll
    

2. 安装必要的依赖包

如果系统里还没装Flex和Bison(对应Lex和Yacc)的开发包,先安装它们:

  • 对于Debian/Ubuntu系列:
    sudo apt-get update && sudo apt-get install bison flex
    
  • 对于CentOS/RHEL系列:
    sudo yum install bison flex
    
  • 对于Fedora:
    sudo dnf install bison flex
    

3. 尝试移除-ly参数直接编译

新版本的Bison生成的语法分析器代码,已经内置了原本需要liby库提供的函数,不需要额外链接。你可以试试简化编译命令:

gcc -o C_PARSER lex.yy.c y.tab.c -ll

4. 检查库文件是否存在

如果上面的方法都不行,可以手动检查系统里有没有Yacc/Bison的库:

# 查找liby相关库
find /usr/lib /usr/lib64 -name "liby*"
# 查找libbison相关库
find /usr/lib /usr/lib64 -name "libbison*"

如果没有找到对应的库文件,说明依赖包确实没装全,回到步骤2重新安装即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 09:22:38