BSD Fortune para símbolo del sistema de Windows o DOS

BSD Fortune para símbolo del sistema de Windows o DOS

Esta es probablemente una pregunta estúpida, pero me preguntaba si lo siguiente es factible: si me olvido de esto y sigo la ruta VM/sistema operativo GNU-Linux completo, está bien.

Después de trastear con el código fuente de Fortune y Fortune-Mod (disponible en ibiblio) y no llegar a ninguna parte con los intentos de reemplazar el código específico de Linux con código específico de Windows (posiblemente debido a mi grave noobismo en lo que respecta a C), estoy preguntándolo de todos modos.

¿Alguien tiene una versión de línea de comandos/ventana de consola del programa BSD Fortune/Fortune-mod que se compilará (y preferiblemente se ejecutará) en una máquina DOS o en una consola de Windows/ventana de símbolo del sistema (sin cygwin, si es posible)? ? ¿Es posible compilar Fortune en una máquina GNU/Linux, utilizando archivos de encabezado GNU-Linux, pero apuntarlo a una máquina DOS/Windows o es una pregunta ingenua?

[EDITAR] ¿Debería preguntar esto en stackoverflow?

Respuesta1

Al examinar el código fuente de Fortune.c de Fortune-Mod, parece que se requeriría un esfuerzo de portabilidad significativo para que esto se compile de forma nativa en Windows. Cygwin es probablemente tu mejor opción; todo lo que tendrá que hacer es enviar las DLL de tiempo de ejecución de Cygwin junto con el EXE integrado, y no tendrá que ejecutarlo dentro de una terminal Cygwin si no lo desea. Cygwin debería proporcionar el 99% de la capa de interoperabilidad POSIX necesaria para compilarlo. De no ser así, existe una reescritura de Fortune en Python que se ejecutará fácilmente en cualquier plataforma.

Le invitamos a intentar portarlo usted mismo, pero no se compilará con Visual Studio o MinGW a menos que se deshaga de cosas como #include <sys/*.h>y fcntl.hdel código fuente. Estas son cosas específicas de POSIX que Windows no admite de forma nativa. Veraquí-- los descriptores de archivos y los sockets se tratan de manera muy diferente en Windows que en BSD/UNIX/Linux.

Cygwin, por otro lado, está diseñado para admitir exactamente este tipo de cosas y lo traduce bajo el capó en llamadas Win32 equivalentes. Al compilar en Cygwin puedes encontrartealgunoerrores en tiempo de compilación, pero la gravedad y dificultad de estos errores serán menores en comparación con las dificultades encontradas al migrarlo para compilarlo en Visual Studio o MinGW.

Además, el cmd.exeentorno de shell para Microsoft Windows (al menos en Windows NT y posteriores) no está relacionado de ninguna manera con DOS. No sé por qué querrías corrercualquier cosaen DOS a menos que fuera absolutamente necesario y, en este caso, ejecutar DOS facilitaría las cosas.más difícil, no más fácil.


Actualizar:

Aquí hay instrucciones para compilar en Cygwin:

  1. Instalar Cygwin

  2. Instale los paquetes libpcreposix0, gcc-core, makeylibpcre-devel

  3. Desempaquete el Fortune-mod-9708.tar.gz en una carpeta

  4. Edita Makefilecon tu editor de texto favorito

  5. Cambie la línea 49 para que diga:REGEXDEFS=-DHAVE_REGEX_H -DPOSIX_REGEX

  6. Cambie la línea 55 para que diga:REGEXLIBS=-lpcreposix

  7. Ejecutar makeen la carpeta Fortune-mod-9708.

  8. Esperar

  9. Ahora deberías tener un fortune.exebinario compilado. Deben existir los siguientes binarios:

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

Ahora puedes ejecutarlo make instally pondrá todo en /usr/localsubdirectorios. O puede modificar el Makefile para instalarlo en cualquier lugar que desee.

Si desea copiar esta herramienta en otro lugar, coloque los archivos /bin/cyg*.dllen /usr/local/games, luego tome la carpeta completa /usr/local, comprímala (o cópiela en algún lugar) y ejecute games/fortune.exe como desee. Es posible que necesite algunas DLL adicionales del directorio bin de cygwin; si te da errores al iniciarlo es por eso. Colóquelos en el mismo directorio para fortune.exeque funcione.


Mi respuesta a tu mención de DOS:

No

Respuesta2

https://www.bgreco.net/fortunaproporciona Fortune en Powershell. El tiempo avanza.

información relacionada