Работает на 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
и делал это export PATH=/usr/local/bin:$PATH
раньше ./configure
, но это не сработало; по-прежнему выдает ошибку об отсутствии bison > 3.0 (та же ошибка, что и до того, как я попытался поиграться с bison):
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
что используется правильный двоичный файл bison?
решение1
Моя проблема заключалась в том, что bison
установка была неудачной.
Я скомпилировал bison из исходников, configure --prefix=/usr/local
вместо того чтобы позволить brew решать, куда все поместить, а затем убедился, что PATH указан правильно, когда использовал его configure
для генерации make-файла для компиляции Wine, и это сработало.
Проблема возникла из-за того, что скрипт конфигурации Wine просто проверял код выхода запуска Bison на пустом файле, чтобы проверить версию. Поскольку Bison терпел неудачу из-за сломанной установки, он выдавал код выхода с ошибкой, заставляя скрипт конфигурации считать, что Bison — недостаточная версия.