bison: /usr/local/share/bison.simple: No such file or directory

本文解决了一个Flex+Bison配置环境中常见的bison:/usr/local/share/bison.simple:Nosuchfileordirectory错误,通过以管理员模式运行程序,成功解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

bison: /usr/local/share/bison.simple: No such file or directory

前言:

这个问题是在太坑了,网上搜到的资料又太少,所以记下来吧,希望能帮助到其他人。

问题描述:

Flex+Bison,配置环境完全没问题,Flex使用可以,但到Bison时却出现 bison: /usr/local/share/bison.simple: No such file or directory

解决经过:

  1. 一开始以为自己没下载cygwin64,但因为自己直接安装并不需要本机编译,并且下载之后查看bison --version可以运行,所以,之后下载了也并没什么用…
  2. 认为配置环境出现问题,但是查看,并没有任何问题…
  3. 然后,就开始了漫长的google…
    1. 这个问题最先看到是一个国外论坛提出来的,但十多年并没有解决…点击访问
    2. 之后在csdn有关配置下面的评论区出现的,但也没有解决方案…点击访问
    3. 查找到很多年的GNU一封邮件出现这个,看其回复邮件,看不懂···略。点击访问
    4. 有一篇国外的博客,问题相符,有说明原因(大体还是环境变量问题),但是是在makefile文件中进行解决的,显然无法满足要求(可能之后会用到)。点击访问
    5. Stack Overflow 上有类似并非完全相同的问题,答主认为bison出问题建议重新下载… 点击访问
  4. 总体来说,大多数反应是配置环境变量问题,但我反复确认自己的配置并没有错误,并且开始在用户变量,之后在系统变量也进行了相同配置。

解决方案:

使用管理员模式运行 (对,我也不知道为啥,捣鼓了2个多小时,准备重新配置时脑子一热试了一下竟然解决了?)

以下解决方案都可以:

  1. 直接 bison.exe 设置以管理员方式运行(但是在终端一运行就出提示框,很烦人。)
  2. 将终端以管理员方式打开。
  3. 在终端中切换管理员权限。
  4. 自己使用VS Code编辑器,直接设置管理员方式运行。(推荐,这样内置的终端也默认以管理员方式运行,以后这种破事能避免不少…)
### 解决Bison M4 子进程失败问题 当遇到 `bison` 运行时 `m4` 子进程失败并提示 “no such file or directory”的错误时,这通常表明系统缺少必要的工具或配置不正确。以下是可能的原因以及解决方案: #### 可能原因分析 1. **M4 工具未安装** 错误可能是由于系统中未安装 `m4` 工具引起的。`bison` 需要依赖于 `m4` 来处理宏定义文件[^2]。 2. **路径环境变量缺失** 即使已安装 `m4`,但如果其可执行文件不在系统的 PATH 环境变量中,也会导致类似的错误消息[^3]。 3. **权限不足** 如果当前用户没有足够的权限来访问或运行 `m4` 的二进制文件,则会触发此错误[^4]。 4. **输入文件不存在或路径错误** 提供给 `bison` 或 `m4` 处理的源文件如果丢失或者指定路径有误,同样会产生此类报错信息[^5]。 #### 解决方案 ##### 安装 M4 软件包 确认是否已经安装了 `m4`。如果没有,请通过以下命令进行安装: 对于基于 Debian/Ubuntu 的 Linux 发行版: ```bash sudo apt-get update && sudo apt-get install m4 ``` 对于 RedHat/CentOS/Fedora 类型的操作系统: ```bash sudo yum install m4 ``` 验证安装成功与否可以尝试运行下面这条指令查看版本号: ```bash m4 --version ``` ##### 检查 PATH 设置 确保 `/usr/bin/m4` (或其他实际位置) 包含在用户的 PATH 中。可以通过编辑 `.bashrc`, `.zshrc` 文件加入如下内容实现永久生效: ```bash export PATH=$PATH:/path/to/m4/directory source ~/.bashrc # 更新shell session中的设置 ``` 替换上述代码片段里的 `/path/to/m4/directory` 成真实目录地址。 ##### 查看权限情况 利用 ls 命令检查是否有读取和执行权利: ```bash ls -l $(which m4) ``` 必要情况下赋予适当权限: ```bash chmod u+x /absolute/path/to/m4/executable ``` ##### 核实输入参数准确性 重新审视调用 bison 和关联到 m4 的脚本部分,保证所有的相对路径都转换成绝对形式;另外还要留意语法结构上是否存在拼写失误等问题。 ```python import os print(os.environ['PATH']) # Debugging step to confirm environment variable content. ``` 以上方法应该能够有效缓解大部分因 "subprocess failed" 导致无法定位目标文件夹而产生的异常状况。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值