适用于 Windows 命令提示符或 DOS 的 BSD fortune

适用于 Windows 命令提示符或 DOS 的 BSD fortune

这可能是一个愚蠢的问题,但我只是想知道以下是否可行:如果我应该忘掉它并采用 VM / 完整 GNU-Linux OS 路线,那就很好了。

在弄乱了 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 应该提供编译所需的 POSIX 互操作层的 99%。除此之外,还有一个用 Python 重写的 Fortune,可在任何平台上轻松运行。

欢迎您尝试自己移植,但除非您从源代码中删除和之类的东西#include <sys/*.h>,否则它不会与 Visual Studio 或 MinGW 一起编译fcntl.h。这些是 Windows 本身不支持的 POSIX 特定的东西。请参阅这里-- 文件描述符和套接字在 Windows 中的处理方式与在 BSD/UNIX/Linux 中的处理方式有很大不同。

另一方面,Cygwin 的设计正是支持这种类型的东西,它在底层将其转换为等效的 Win32 调用。在 Cygwin 上编译时,您可能会遇到一些编译时错误,但这些错误的严重性和难度与移植到 Visual Studio 或 MinGW 上编译时遇到的困难相比要小得多。

此外,cmd.exeMicrosoft Windows 的 shell 环境(至少在 Windows NT 及更高版本上)与 DOS 没有任何关系。我不知道你为什么要运行任何事物除非绝对必要,否则在 DOS 上执行此操作,在这种情况下,运行 DOS 会使事情更难,并不容易。


更新:

以下是在 Cygwin 上编译的说明:

  1. 安装 Cygwin

  2. 安装libpcreposix0、、和包gcc-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 中提供 Fortune。时代在前进。

相关内容