Windows 명령 프롬프트 또는 DOS용 BSD 운세

Windows 명령 프롬프트 또는 DOS용 BSD 운세

아마도 어리석은 질문일 수도 있지만 다음이 가능한지 궁금합니다. 그냥 잊어버리고 VM/전체 GNU-Linux OS 경로로 가면 괜찮습니다.

Fortune 및 Fortunes-Mod(ibiblio에서 사용 가능)의 소스 코드를 가지고 장난을 치고 Linux 전용 코드를 Windows 전용 코드로 대체하려는 시도는 아무 성과도 얻지 못했습니다(아마도 C에 관한 심각한 멍청함으로 인해). 어쨌든 물어보세요.

DOS 시스템이나 Windows 콘솔/명령 프롬프트 창(가능한 경우 cygwin 없이)에서 컴파일(그리고 바람직하게는 실행)되는 BSD luck/fortune-mod 프로그램의 명령줄/콘솔 창 버전을 가진 사람이 있습니까? ? GNU-Linux 헤더 파일을 사용하여 GNU/Linux 시스템에서 행운을 컴파일하는 것이 가능하지만 이를 DOS/Windows 시스템용으로 대상으로 삼을 수 있습니까? 아니면 순진한 질문입니까?

[편집] 오히려 stackoverflow에 물어봐야 할까요?

답변1

luck-mod에서 luck.c의 소스 코드를 조사한 결과 Windows에서 기본적으로 이 컴파일을 수행하려면 상당한 포팅 노력이 필요할 것 같습니다. Cygwin이 아마도 최선의 선택일 것입니다. 여러분이 해야 할 일은 빌드된 EXE와 함께 Cygwin 런타임 DLL을 제공하는 것뿐입니다. 원하지 않는 경우 Cygwin 터미널 내에서 실행할 필요가 없습니다. Cygwin은 컴파일하는 데 필요한 POSIX 상호 운용성 계층의 99%를 제공해야 합니다. 실패하면 모든 플랫폼에서 쉽게 실행될 수 있는 Python으로 Fortune을 다시 작성했습니다.

직접 포팅해 볼 수도 있지만 소스에서 #include <sys/*.h>같은 항목을 제거하지 않는 한 Visual Studio 또는 MinGW로 컴파일되지 않습니다. fcntl.h이는 Windows가 기본적으로 지원하지 않는 POSIX 관련 사항입니다. 보다여기-- 파일 설명자와 소켓은 BSD/UNIX/Linux와 Windows에서 매우 다르게 처리됩니다.

반면 Cygwin은 정확히 이러한 유형을 지원하도록 설계되었으며 내부적으로 이를 동등한 Win32 호출로 변환합니다. Cygwin에서 컴파일할 때 다음과 같은 문제가 발생할 수 있습니다.일부그러나 이러한 오류의 심각도와 난이도는 Visual Studio 또는 MinGW에서 컴파일하기 위해 포팅할 때 발생하는 어려움에 비해 매우 사소합니다.

또한 cmd.exeMicrosoft Windows(적어도 Windows NT 이상)의 쉘 환경은 DOS와 전혀 관련이 없습니다. 왜 달리고 싶은지 모르겠어요아무것꼭 필요한 경우를 제외하고는 DOS에서 실행해야 하며, 이 경우 DOS를 실행하면 상황이 달라질 수 있습니다.더 세게, 쉽지 않습니다.


업데이트:

Cygwin에서 컴파일하는 방법은 다음과 같습니다.

  1. 시그윈 설치

  2. libpcreposix0, gcc-core, makelibpcre-devel패키지 설치

  3. luck-mod-9708.tar.gz의 압축을 폴더에 풀어주세요

  4. Makefile즐겨 사용하는 텍스트 편집기로 편집

  5. 49행을 다음과 같이 변경합니다.REGEXDEFS=-DHAVE_REGEX_H -DPOSIX_REGEX

  6. 55행을 다음과 같이 변경합니다.REGEXLIBS=-lpcreposix

  7. makeluck-mod-9708 폴더에서 실행하세요 .

  8. 기다리다

  9. 이제 컴파일된 바이너리가 있어야 합니다 fortune.exe. 다음 바이너리가 있어야 합니다.

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

이제 실행하면 make install모든 것이 하위 디렉터리에 저장됩니다 /usr/local. 또는 Makefile을 조정하여 원하는 곳에 설치할 수 있습니다.

이 도구를 다른 곳에 복사하려면 파일을 /bin/cyg*.dll에 넣은 /usr/local/games다음 전체 /usr/local폴더를 압축하고(또는 어딘가에 복사한 후) 원하는 대로 games/fortune.exe를 실행하십시오. cygwin bin 디렉토리에서 추가 DLL이 필요할 수 있습니다. 시작할 때 오류가 발생하는 경우가 바로 그 이유입니다. fortune.exe작동시키려면 동일한 디렉토리에 넣으십시오 .


DOS에 대한 귀하의 언급에 대한 나의 답변은 다음과 같습니다.

아니요

답변2

https://www.bgreco.net/fortunePowershell에서 Fortune을 제공합니다. 시간은 계속 흐른다.

관련 정보