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.h
da 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.exe
ambiente 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:
Instale o Cygwin
Instale os pacotes
libpcreposix0
,gcc-core
,make
elibpcre-devel
Descompacte o fortune-mod-9708.tar.gz para uma pasta
Edite
Makefile
com seu editor de texto favoritoMude a linha 49 para ler:
REGEXDEFS=-DHAVE_REGEX_H -DPOSIX_REGEX
Mude a linha 55 para ler:
REGEXLIBS=-lpcreposix
Execute
make
na pasta fortune-mod-9708Espere
Agora você deve ter um
fortune.exe
biná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 install
e colocar tudo em /usr/local
subdiretó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*.dll
em /usr/local/games
, pegue a /usr/local
pasta 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.exe
fazê-lo funcionar.
Minha resposta à sua menção ao DOS:
Responder2
https://www.bgreco.net/fortunefornece Fortune no Powershell. O tempo avança.