BSD Fortune für die Windows-Eingabeaufforderung oder DOS

BSD Fortune für die Windows-Eingabeaufforderung oder DOS

Das ist wahrscheinlich eine dumme Frage, aber ich habe mich nur gefragt, ob Folgendes machbar ist: Wenn ich es einfach vergessen und den Weg über VM/vollständiges GNU-Linux-Betriebssystem gehen sollte, wäre das in Ordnung.

Nachdem ich mit dem Quellcode für Fortune und Fortune-Mod (verfügbar bei ibiblio) herumgespielt habe und bei meinen Versuchen, Linux-spezifischen Code durch Windows-spezifischen Code zu ersetzen (möglicherweise aufgrund schwerer Anfängerkenntnisse in C), nicht weitergekommen bin, frage ich es trotzdem.

Hat jemand eine Befehlszeilen-/Konsolenfensterversion des BSD-Programms Fortune/Fortune-Mod, die entweder auf einem DOS-Rechner oder in einem Windows-Konsolen-/Eingabeaufforderungsfenster (wenn möglich ohne Cygwin) kompiliert (und vorzugsweise ausgeführt) wird? Ist es möglich, Fortune auf einem GNU/Linux-Rechner unter Verwendung von GNU-Linux-Headerdateien zu kompilieren, es aber auf einen DOS/Windows-Rechner auszurichten, oder ist das eine naive Frage?

[BEARBEITEN] Soll ich das lieber auf Stackoverflow fragen?

Antwort1

Aus der Untersuchung des Quellcodes von fortune.c von fortune-mod geht hervor, dass ein erheblicher Portierungsaufwand erforderlich wäre, um dies nativ unter Windows kompilieren zu können. Cygwin ist wahrscheinlich Ihre beste Wahl. Sie müssen lediglich die Cygwin-Runtime-DLLs zusammen mit der erstellten EXE ausliefern und müssen es nicht in einem Cygwin-Terminal ausführen, wenn Sie nicht möchten. Cygwin sollte 99 % der POSIX-Interop-Schicht bereitstellen, die zum Kompilieren erforderlich ist. Andernfalls gibt es eine Neufassung von Fortune in Python, die problemlos auf jeder Plattform ausgeführt werden kann.

Sie können gerne versuchen, es selbst zu portieren, aber es wird nicht mit Visual Studio oder MinGW kompiliert, es sei denn, Sie entfernen Dinge wie #include <sys/*.h>und fcntl.haus der Quelle. Dies sind POSIX-spezifische Dinge, die Windows nicht nativ unterstützt. SieheHier- Dateideskriptoren und Sockets werden unter Windows ganz anders behandelt als unter BSD/UNIX/Linux.

Cygwin hingegen ist darauf ausgelegt, genau diese Art von Dingen zu unterstützen, und übersetzt sie im Hintergrund in die entsprechenden Win32-Aufrufe. Beim Kompilieren auf Cygwin können Sie auf Folgendes stoßen:mancheEs kann zu Fehlern bei der Kompilierung kommen, aber die Schwere und Schwierigkeit dieser Fehler sind sehr gering im Vergleich zu den Schwierigkeiten, die bei der Portierung zur Kompilierung in Visual Studio oder MinGW auftreten.

Außerdem cmd.exeist die Shell-Umgebung für Microsoft Windows (zumindest unter Windows NT und höher) in keiner Weise mit DOS verwandt. Ich weiß nicht, warum Sieirgendetwasunter DOS, es sei denn, es ist unbedingt notwendig, und in diesem Fall würde die Ausführung von DOS die DingeSchwerer, nicht einfacher.


Aktualisieren:

Hier sind Anweisungen zum Kompilieren unter Cygwin:

  1. Installieren Sie Cygwin

  2. Installieren Sie die Pakete libpcreposix0, gcc-core, make, undlibpcre-devel

  3. Entpacken Sie die Datei fortune-mod-9708.tar.gz in einen Ordner

  4. Bearbeiten Sie Makefilemit Ihrem bevorzugten Texteditor

  5. Ändern Sie Zeile 49 wie folgt:REGEXDEFS=-DHAVE_REGEX_H -DPOSIX_REGEX

  6. Ändern Sie Zeile 55 wie folgt:REGEXLIBS=-lpcreposix

  7. makeIm Ordner fortune-mod-9708 ausführen

  8. Warten

  9. Jetzt sollten Sie eine kompilierte fortune.exeBinärdatei haben. Die folgenden Binärdateien sollten vorhanden sein:

    ./fortune/fortune.exe
    ./util/rot.exe
    ./util/strfile.exe
    ./util/unstr.exe

Jetzt können Sie es ausführen make installund es wird alles in Unterverzeichnisse verschieben /usr/local. Oder Sie können das Makefile anpassen, um es an einem beliebigen Ort zu installieren.

Wenn Sie dieses Tool an einen anderen Ort kopieren möchten, legen Sie die Dateien /bin/cyg*.dllin ab /usr/local/games, nehmen Sie dann den gesamten /usr/localOrdner, packen Sie ihn in eine Zip-Datei (oder kopieren Sie ihn irgendwohin) und führen Sie games/fortune.exe wie gewünscht aus. Möglicherweise benötigen Sie einige zusätzliche DLLs aus dem Cygwin-Bin-Verzeichnis. Wenn beim Starten Fehler auftreten, ist das der Grund. Legen Sie sie in dasselbe Verzeichnis wie, fortune.exedamit es funktioniert.


Meine Antwort auf Ihre Erwähnung von DOS:

NEIN

Antwort2

https://www.bgreco.net/fortunebietet Fortune in Powershell. Die Zeit schreitet voran.

verwandte Informationen