fortuna BSD para prompt de comando do Windows ou DOS

3

Esta é provavelmente uma pergunta estúpida, mas eu estava apenas imaginando se o seguinte é factível: Se eu simplesmente esquecer e seguir a rota VM / GNU-Linux, tudo bem.

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

Alguém tem uma versão de janela de linha de comando / console do programa fortune / fortune-mod do BSD que irá compilar (e preferencialmente executar) em uma máquina DOS ou em uma janela do console do Windows / prompt de comando (sem cygwin, se possível)? É possível compilar a sorte em uma máquina GNU / Linux, usando arquivos de cabeçalho GNU-Linux, mas direcioná-la para uma máquina DOS / Windows ou é uma questão ingênua?

[EDIT] Eu deveria perguntar isso no stackoverflow?

    
por Agi Hammerthief 02.12.2013 / 21:45

1 resposta

2

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:

  1. Instalar o Cygwin
  2. Instale os pacotes libpcreposix0 , gcc-core , make e libpcre-devel
  3. Descompacte o arquivo fortune-mod-9708.tar.gz em uma pasta
  4. Edite Makefile com seu editor de texto favorito
  5. Altere a linha 49 para ler: REGEXDEFS=-DHAVE_REGEX_H -DPOSIX_REGEX
  6. Altere a linha 55 para ler: REGEXLIBS=-lpcreposix
  7. Executar make na pasta fortune-mod-9708
  8. Aguarde
  9. 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:

    
por 02.12.2013 / 22:53