Ich verwende macOS Catalina 10.15.6. Meine Frage bezieht sich eher auf die Kompilierung mit GNU-Tools und ist daher möglicherweise besser für eine andere SE-Site geeignet. Wenn das der Fall ist, schließe ich sie gerne und frage woanders nach.
Ich versuche, Software zu kompilieren (nämlich wine-6.0
), und die Kompilierung erfordert Bison, für das bereits eine ausführbare Datei in vorhanden ist /usr/bin
. Allerdings muss Bison Version >3.0 haben, um das Programm zu kompilieren, und die Binärdatei in /usr/bin
hat Version 2.7.6. Ich habe Bison 3.7.6 kompiliert und wollte die neue Bison 3.7-Binärdatei einfach in verschieben, /usr/bin
aber aufgrund des Dateisystemschutzes von macOS kann ich nicht einfach ersetzen /usr/bin/bison
. Ich müsste meinen Mac im Wiederherstellungsmodus neu starten, um die Dateisystemsperre zu deaktivieren, aber ich habe etwas geöffnet, das im Moment nicht beendet werden kann.
Die Verwendung ./configure --enable-win64
führt zu folgendem Fehler:
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.
Ich dachte, eine Änderung PATH
würde das Problem beheben. Ich habe die Bison-3.7.6-Binärdatei verschoben und das schon einmal /usr/local/bin/bison
gemacht , aber es funktioniert nicht. Es erscheint immer noch die Fehlermeldung, dass Bison nicht >3.0 ist (dieselbe Fehlermeldung wie vor meinem Versuch, Bison zu manipulieren):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.
Das Merkwürdige ist, dass schon beim Versuch, Bison auszuführen, die richtige Binärdatei verwendet wird.
$ bison -V
bison (GNU Bison) 3.7.6
Written by Robert Corbett and Richard Stallman.
...
$ which bison
/usr/local/bin/bison
Ich habe auch versucht, ein wenig mit der Datei herumzuspielen configure.ac
, aber das Problem ist, dass ich nicht wirklich weiß, was ich da mache. Das Bearbeiten der Konfigurationsdatei und das erneute Ausführen autoconf
und Verwenden ./configure
funktioniert immer noch nicht. Letztendlich lautet meine Frage: Wie stelle ich sicher, dass ./configure
die richtige Bison-Binärdatei verwendet wird?
Antwort1
Mein Problem war, dass die bison
Installation fehlerhaft war.
Ich habe Bison aus dem Quellcode kompiliert, configure --prefix=/usr/local
anstatt Brew entscheiden zu lassen, wo alles abgelegt wird, und habe dann sichergestellt, dass PATH korrekt war, als ich es configure
zum Generieren des Makefiles für die Wine-Kompilierung verwendet habe, und es hat funktioniert.
Das Problem entstand, weil das Wine-Konfigurationsskript nur den Exit-Code der Ausführung von Bison auf einer leeren Datei überprüfte, um die Version zu verifizieren. Da Bison aufgrund einer fehlerhaften Installation fehlschlug, gab es den Fehler-Exit-Code aus, wodurch das Konfigurationsskript annahm, dass Bison eine unzureichende Version sei.