BSD fortune для командной строки Windows или DOS

BSD fortune для командной строки Windows или DOS

Это, возможно, глупый вопрос, но мне просто интересно, возможно ли следующее: если я просто забуду об этом и пойду по пути виртуальной машины/полноценной ОС GNU-Linux, это нормально.

После того, как я повозился с исходным кодом fortune и fortune-mod (доступным на ibiblio) и не добился успеха в попытках заменить специфичный для Linux код на специфичный для Windows код (возможно, из-за полного нубизма в отношении C), я все равно задаю этот вопрос.

Есть ли у кого-нибудь версия командной строки/консольного окна программы BSD fortune/ fortune-mod, которая будет компилироваться (и, желательно, запускаться) либо на машине DOS, либо в консоли/окне командной строки Windows (без cygwin, если возможно)? Возможно ли скомпилировать fortune на машине GNU/Linux, используя заголовочные файлы GNU-Linux, но нацелить ее на машину DOS/Windows, или это наивный вопрос?

[ПРАВКА] Мне лучше спросить об этом на stackoverflow?

решение1

Изучив исходный код fortune.c из fortune-mod, можно сделать вывод, что для его компиляции нативно в Windows потребуются значительные усилия по портированию. Cygwin, вероятно, ваш лучший выбор; все, что вам нужно сделать, это отправить библиотеки DLL времени выполнения Cygwin вместе со встроенным EXE, и вам не придется запускать его в терминале Cygwin, если вы этого не хотите. Cygwin должен предоставить 99% уровня взаимодействия POSIX, необходимого для его компиляции. Если это не удастся, есть переписанный Fortune на Python, который будет легко работать на любой платформе.

Вы можете попробовать и перенести его самостоятельно, но он не будет компилироваться с Visual Studio или MinGW, если вы не избавитесь от таких вещей, как #include <sys/*.h>и fcntl.hиз исходного кода. Это специфичные для POSIX вещи, которые Windows изначально не поддерживает. Смотритездесь-- файловые дескрипторы и сокеты обрабатываются в Windows совершенно иначе, чем в BSD/UNIX/Linux.

Cygwin, с другой стороны, разработан для поддержки именно этого типа вещей, и он транслирует это под капотом в эквивалентные вызовы Win32. При компиляции на Cygwin вы можете столкнуться снекоторыйошибки времени компиляции, но серьезность и сложность этих ошибок будут весьма незначительны по сравнению с трудностями, возникающими при переносе для компиляции в Visual Studio или MinGW.

Кроме того, cmd.exeоболочка среды Microsoft Windows (по крайней мере, в Windows NT и более поздних версиях) никак не связана с DOS. Я не знаю, зачем вам может понадобиться запуститьчто-либона DOS, если только это не было абсолютно необходимо, а в этом случае запуск DOS сделал бы вещиСильнее, не легче.


Обновлять:

Вот инструкции по компиляции в Cygwin:

  1. Установить Cygwin

  2. Установите пакеты libpcreposix0, gcc-core, make, иlibpcre-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 по желанию. Вам могут понадобиться некоторые дополнительные DLL из каталога bin cygwin; если при запуске возникают ошибки, вот почему. Поместите их в тот же каталог, чтобы fortune.exeвсе заработало.


Мой ответ на ваше упоминание DOS:

нет

решение2

https://www.bgreco.net/fortuneпредоставляет Fortune в Powershell. Время идет.

Связанный контент