Fortuna BSD para prompt de comando do Windows ou DOS

Fortuna BSD para prompt de comando do Windows ou DOS

Esta é provavelmente uma pergunta estúpida, mas eu estava me perguntando se o seguinte é possível: Se eu simplesmente esquecer isso e seguir a rota VM/sistema operacional GNU-Linux completo, tudo bem.

Depois de mexer no código-fonte do fortune e do fortune-mod (disponível no ibiblio) e não chegar a lugar nenhum com tentativas de substituir o código específico do Linux por código específico do Windows (possivelmente devido à grande noobishness quando se trata de C), estou perguntando de qualquer maneira.

Alguém tem uma versão de linha de comando/janela de console do programa BSD fortune/fortunt-mod que será compilada (e de preferência executada) em uma máquina DOS ou em um console do Windows/janela de prompt de comando (sem cygwin, se possível) ? É possível compilar fortuna em uma máquina GNU/Linux, usando arquivos de cabeçalho GNU-Linux, mas direcioná-la para uma máquina DOS/Windows ou essa é uma pergunta ingênua?

[EDITAR] Devo perguntar isso no stackoverflow?

Responder1

Ao examinar o código-fonte do fortune.c do fortune-mod, parece que seria necessário um esforço significativo de portabilidade para tornar esta compilação nativa no Windows. Cygwin é provavelmente sua melhor aposta; tudo o que você precisa fazer é enviar as DLLs de tempo de execução do Cygwin junto com o EXE construído, e você não precisará executá-lo dentro de um terminal Cygwin se não quiser. Cygwin deve fornecer 99% da camada de interoperabilidade POSIX necessária para compilá-lo. Caso contrário, há uma reescrita do Fortune em Python que será executada prontamente em qualquer plataforma.

Você pode tentar portá-lo sozinho, mas ele não será compilado com o Visual Studio ou MinGW, a menos que você se livre de coisas como #include <sys/*.h>e fcntl.hda fonte. Essas são coisas específicas do POSIX que o Windows não oferece suporte nativo. Veraqui- descritores de arquivos e soquetes são tratados de maneira muito diferente no Windows e no BSD/UNIX/Linux.

O Cygwin, por outro lado, foi projetado para suportar exatamente esse tipo de coisa e traduz isso em chamadas Win32 equivalentes. Ao compilar no Cygwin você pode encontraralgunserros em tempo de compilação, mas a gravidade e a dificuldade desses erros serão muito menores em comparação com as dificuldades encontradas na portabilidade para compilação no Visual Studio ou MinGW.

Além disso, o cmd.exeambiente shell do 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 correrqualquer coisano DOS, a menos que fosse absolutamente necessário e, neste caso, executar o DOS tornaria as coisasmais difícil, não é mais fácil.


Atualizar:

Aqui estão as instruções para compilar no Cygwin:

  1. Instale o Cygwin

  2. Instale os pacotes libpcreposix0, gcc-core, makeelibpcre-devel

  3. Descompacte o fortune-mod-9708.tar.gz para uma pasta

  4. Edite Makefilecom seu editor de texto favorito

  5. Mude a linha 49 para ler:REGEXDEFS=-DHAVE_REGEX_H -DPOSIX_REGEX

  6. Mude a linha 55 para ler:REGEXLIBS=-lpcreposix

  7. Execute makena pasta fortune-mod-9708

  8. Espere

  9. Agora você deve ter um fortune.exebinário compilado. Os seguintes binários devem existir:

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

Agora você pode executar make installe colocar tudo em /usr/localsubdiretórios. Ou você pode ajustar o Makefile para instalar em qualquer lugar que desejar.

Se você quiser copiar esta ferramenta para outro lugar, coloque os arquivos /bin/cyg*.dllem /usr/local/games, pegue a /usr/localpasta inteira, compacte-a (ou copie-a para algum lugar) e execute games/fortune.exe conforme desejado. Você pode precisar de algumas DLLs adicionais do diretório bin do cygwin; se você receber erros ao iniciá-lo, é por isso. Coloque-os no mesmo diretório para fortune.exefazê-lo funcionar.


Minha resposta à sua menção ao DOS:

não

Responder2

https://www.bgreco.net/fortunefornece Fortune no Powershell. O tempo avança.

informação relacionada