运行 macOS Catalina 10.15.6。我的问题与使用 GNU 工具进行编译更相关,因此它可能更适合不同的 SE 站点 — 如果是这种情况,我很乐意关闭并询问其他地方。
我正在尝试编译软件(即wine-6.0
),并且编译需要 bison,其中已经有一个可执行文件/usr/bin
。但是,bison 的版本需要 >3.0 才能编译该程序,并且二进制文件的/usr/bin
版本是 2.7.6。我编译了 bison 3.7.6,本来打算将新的 bison 3.7 二进制文件移入,/usr/bin
但由于 macOS 的文件系统保护,我不能只替换/usr/bin/bison
.我必须在恢复模式下重新启动我的 Mac 才能禁用文件系统锁定,但我有一些打开的东西目前无法停止运行。
使用./configure --enable-win64
会出现以下错误:
checking for bison... bison
checking whether bison is recent enough... no
configure: error: Your bison version is too old. Please install bison version 3.0 or newer.
为了解决这个问题,我认为修改PATH
会起作用;我之前将 bison 3.7.6 二进制文件移至/usr/local/bin/bison
并执行过,但它不起作用;它仍然只是关于没有野牛 >3.0 的错误(与我尝试弄乱野牛之前的错误相同):export PATH=/usr/local/bin:$PATH
./configure
checking for bison... bison
checking whether bison is recent enough... no
configure: error: Your bison version is too old. Please install bison version 3.0 or newer.
奇怪的是,只是尝试运行 bison 使用正确的二进制文件。
$ bison -V
bison (GNU Bison) 3.7.6
Written by Robert Corbett and Richard Stallman.
...
$ which bison
/usr/local/bin/bison
我也尝试稍微弄乱该configure.ac
文件,但问题是我真的不知道我在那里做什么。编辑配置文件并重新运行autoconf
并使用./configure
然后仍然不起作用。最终,我的问题是:如何确保./configure
使用正确的野牛二进制文件?
答案1
我的问题是bison
安装不好。
我从源代码编译了 bison,而不是让 brew 决定将所有内容放在哪里,然后在使用生成 wine 编译的 makefileconfigure --prefix=/usr/local
时确保 PATH 是正确的,并且它有效。configure
问题是由于 wine 配置脚本仅检查在空文件上运行 Bison 的退出代码以验证版本而引起的。由于 bison 由于安装损坏而失败,因此它给出了错误退出代码,导致配置脚本认为 bison 版本不足。