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.h
del 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.exe
entorno 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:
Instalar Cygwin
Instale los paquetes
libpcreposix0
,gcc-core
,make
ylibpcre-devel
Desempaquete el Fortune-mod-9708.tar.gz en una carpeta
Edita
Makefile
con tu editor de texto favoritoCambie la línea 49 para que diga:
REGEXDEFS=-DHAVE_REGEX_H -DPOSIX_REGEX
Cambie la línea 55 para que diga:
REGEXLIBS=-lpcreposix
Ejecutar
make
en la carpeta Fortune-mod-9708.Esperar
Ahora deberías tener un
fortune.exe
binario compilado. Deben existir los siguientes binarios:./fortune/fortune.exe
./util/rot.exe
./util/strfile.exe
./util/unstr.exe
Ahora puedes ejecutarlo make install
y pondrá todo en /usr/local
subdirectorios. 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*.dll
en /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.exe
que funcione.
Mi respuesta a tu mención de DOS:
Respuesta2
https://www.bgreco.net/fortunaproporciona Fortune en Powershell. El tiempo avanza.