Windows コマンドプロンプトまたは DOS 用の BSD Fortune

Windows コマンドプロンプトまたは DOS 用の BSD Fortune

これはおそらく愚かな質問ですが、次のことが実行可能かどうか疑問に思っていました。それを忘れて、VM / 完全な GNU-Linux OS ルートに進むのであれば、それで問題ありません。

fortune と fortune-mod (ibiblio から入手可能) のソース コードをいじくりまわし、Linux 固有のコードを Windows 固有のコードに置き換えようとしたが (おそらく C に関してはかなり初心者だったため) まったく成果がなかったため、とにかく質問します。

DOS マシンまたは Windows コンソール/コマンド プロンプト ウィンドウ (可能であれば cygwin なし) でコンパイル (できれば実行) できる、BSD fortune/fortune-mod プログラムのコマンド ライン/コンソール ウィンドウ バージョンを持っている人はいませんか? GNU/Linux マシンで GNU-Linux ヘッダー ファイルを使用して fortune をコンパイルし、DOS/Windows マシンをターゲットにすることは可能ですか? それとも、これは素朴な質問でしょうか?

[編集] これをstackoverflowで質問したほうがよいでしょうか?

答え1

fortune-mod の fortune.c のソース コードを調べると、これを Windows でネイティブにコンパイルするには、かなりの移植作業が必要になりそうです。おそらく Cygwin が最善の策です。ビルドされた EXE と一緒に Cygwin ランタイム DLL を出荷するだけで済みます。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のシェル環境(少なくともWindows NT以降)はDOSとはまったく関係がありません。なぜ実行したいのかわかりません。何でも絶対に必要な場合を除き、DOS上で実行し、この場合、DOSを実行すると、もっと強く、簡単ではありません。


アップデート:

Cygwin でコンパイルする手順は次のとおりです。

  1. Cygwinをインストールする

  2. libpcreposix0、、、およびパッケージをgcc-coreインストールしますmakelibpcre-devel

  3. fortune-mod-9708.tar.gzをフォルダに解凍する

  4. Makefileお気に入りのテキストエディタで編集する

  5. 49行目を次のように変更します。REGEXDEFS=-DHAVE_REGEX_H -DPOSIX_REGEX

  6. 55 行目を次のように変更します。REGEXLIBS=-lpcreposix

  7. makefortune-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を zip 形式で圧縮 (または別の場所にコピー) し、必要に応じて games/fortune.exe を実行します。cygwin bin ディレクトリから追加の DLL が必要になる場合があります。起動時にエラーが発生する場合は、これが原因です。fortune.exeを動作させるには、それらを と同じディレクトリに配置します。


DOS についてのあなたの言及に対する私の返答:

いいえ

答え2

https://www.bgreco.net/fortunePowershell で Fortune を提供します。時は流れていきます。

関連情報