Ao examinar o código-fonte do fortune.c do fortune-mod, parece que seria necessário um esforço significativo de portabilidade para fazer essa compilação nativamente no Windows. Cygwin é provavelmente sua melhor aposta; tudo o que você precisa fazer é enviar as DLLs de tempo de execução do Cygwin juntamente com o EXE construído, e você não terá que executá-lo dentro de um terminal Cygwin se não quiser. O Cygwin deve fornecer 99% da camada de interoperabilidade POSIX necessária para obtê-lo compilado. Na falta disso, há uma reescrita da Fortune em Python que será prontamente executada em qualquer plataforma.
Você pode tentar portá-lo você mesmo, mas ele não será compilado com o Visual Studio ou o MinGW, a menos que você se livre de itens como #include <sys/*.h>
e fcntl.h
da origem. Estas são coisas específicas do POSIX que o Windows não suporta nativamente. Veja aqui - descritores de arquivos e soquetes são tratados de forma muito diferente no Windows do que no BSD / UNIX / Linux.
O Cygwin, por outro lado, é projetado para suportar exatamente esse tipo de coisa, e o traduz sob o capô nas chamadas equivalentes do Win32. Ao compilar no Cygwin, você pode encontrar alguns erros de tempo de compilação, mas a gravidade e a dificuldade desses erros serão muito pequenas comparadas às dificuldades encontradas na portabilidade para compilar no Visual Studio ou MinGW.
Além disso, o ambiente cmd.exe
shell para o Microsoft Windows (pelo menos no Windows NT e posterior) não está de forma alguma relacionado ao DOS. Eu não sei por que você iria querer rodar qualquer coisa no DOS a menos que fosse absolutamente necessário, e neste caso, executar o DOS tornaria as coisas mais difíceis , não mais fáceis.
Atualização:
Aqui estão as instruções para compilar no Cygwin:
- Instalar o Cygwin
- Instale os pacotes
libpcreposix0
,gcc-core
,make
elibpcre-devel
- Descompacte o arquivo fortune-mod-9708.tar.gz em uma pasta
- Edite
Makefile
com seu editor de texto favorito - Altere a linha 49 para ler:
REGEXDEFS=-DHAVE_REGEX_H -DPOSIX_REGEX
- Altere a linha 55 para ler:
REGEXLIBS=-lpcreposix
- Executar
make
na pasta fortune-mod-9708 - Aguarde
-
Agora você deve ter um binário
fortune.exe
compilado. Os seguintes binários devem existir:./ fortune / fortune.exe
./util/rot.exe
./util/strfile.exe
./util/unstr.exe
Agora você pode executar make install
e colocar tudo em /usr/local
de subdiretórios. Ou você pode ajustar o Makefile para instalar onde quiser.
Se você quiser copiar essa ferramenta para outro lugar, coloque os arquivos /bin/cyg*.dll
em /usr/local/games
, então pegue a pasta /usr/local
inteira, feche-a (ou copie-a para algum lugar) e execute os jogos / fortuna .exe conforme desejado. Você pode precisar de algumas DLLs adicionais no diretório cygwin bin; Se você receber erros ao iniciá-lo, é por isso. Coloque-os no mesmo diretório que fortune.exe
para que funcione.
Minha resposta à sua menção ao DOS: