適用於 Windows 命令提示字元或 DOS 的 BSD Fortune

適用於 Windows 命令提示字元或 DOS 的 BSD Fortune

這可能是一個愚蠢的問題,但我只是想知道以下是否可行:如果我應該忘記它並走VM/完整的GNU-Linux作業系統路線,那很好。

在研究了 Fortune 和 Fortune-mod 的源代碼(可從 ibiblio 獲得)並試圖用 Windows 特定代碼替換 Linux 特定代碼卻一無所獲之後(可能是因為涉及 C 時嚴重新手),我無論如何都要問。

有沒有人有 BSD Fortune/ Fortune-mod 程式的命令列/控制台視窗版本,可以在 DOS 機器或 Windows 控制台/命令提示字元視窗中編譯(最好運行)(如果可能,沒有 cygwin) ?是否可以使用 GNU-Linux 頭檔在 GNU/Linux 機器上編譯 Fortune,但將其針對 DOS/ Windows 機器,或者這是一個天真的問題嗎?

[編輯] 我應該在 stackoverflow 上問這個問題嗎?

答案1

從檢查 Fortune-mod 中的 Fortune.c 原始碼來看,似乎需要大量的移植工作才能在 Windows 上進行本機編譯。 Cygwin 可能是您最好的選擇;您所要做的就是將 Cygwin 運行時 DLL 與構建的 EXE 一起發送,如果您不願意,則不必在 Cygwin 終端內運行它。 Cygwin 應該提供編譯所需的 99% 的 POSIX 互通層。如果做不到這一點,可以用 Python 重寫《財富》,以便可以在任何平台上輕鬆運行。

歡迎您嘗試自己移植它,但它不會使用 Visual Studio 或 MinGW 進行編譯,除非您從原始程式碼中刪除諸如#include <sys/*.h>和 之類的東西。fcntl.h這些是 POSIX 特定的東西,Windows 本身不支援。看這裡-- 檔案描述符和套接字在 Windows 中的處理方式與 BSD/UNIX/Linux 上的處理方式非常不同。

另一方面,Cygwin 旨在支援此類事物,並將其在底層轉換為等效的 Win32 呼叫。在Cygwin上編譯時可能會遇到一些編譯時錯誤,但與將其移植到 Visual Studio 或 MinGW 上編譯時遇到的困難相比,這些錯誤的嚴重性和難度將非常小。

而且,cmd.exeMicrosoft Windows 的 shell 環境(至少在 Windows NT 及更高版本上)與 DOS 沒有任何關係。我不知道你為什麼想跑步任何事物除非絕對必要,否則在 DOS 上運行,在這種情況下,運行 DOS 會使事情變得更糟更難,並不容易。


更新:

以下是在 Cygwin 上編譯的說明:

  1. 安裝 Cygwin

  2. 安裝libpcreposix0gcc-coremakelibpcre-devel軟體包

  3. 將fortune-mod-9708.tar.gz解壓縮到一個資料夾

  4. Makefile使用您最喜歡的文字編輯器進行編輯

  5. 將第 49 行改為:REGEXDEFS=-DHAVE_REGEX_H -DPOSIX_REGEX

  6. 將第 55 行改為:REGEXLIBS=-lpcreposix

  7. make在fortune-mod-9708資料夾中運行

  8. 等待

  9. 現在你應該有一個編譯好的fortune.exe二進位。應存在以下二進位檔案:

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

現在您可以運行make install,它會將所有內容放入/usr/local子目錄中。或者您可以調整 Makefile 以安裝在您想要的任何位置。

如果您想將此工具複製到其他地方,請將檔案放入/bin/cyg*.dll/usr/local/games然後取出整個/usr/local資料夾,將其壓縮(或將其複製到其他地方),然後根據需要執行 games/fortune.exe 。您可能需要 cygwin bin 目錄中的一些附加 DLL;如果您在啟動時出現錯誤,這就是原因。將它們放在同一目錄中以fortune.exe使其正常工作。


我對你提到的 DOS 的回應:

不

答案2

https://www.bgreco.net/fortune在 Powershell 中提供《財富》。時間在前進。

相關內容