Windows와 Linux는 서로 다른 시스템이므로 작성된 프로그램을 이식하는 것이 쉽지 않은 경우가 많습니다. 특히 GUI 프로그램을 다룰 때. 다양한 크로스 플랫폼 라이브러리와 SDK가 있지만 이식성을 염두에 두지 않고 작성된 네이티브 프로그램은 이식하기가 상당히 어렵습니다.
Windows에서 Linux용으로 작성된 프로그램을 컴파일하고 실행할 때 Cygwin이라는 솔루션이 있습니다. Cygwin 프로젝트는 Windows용 가장 일반적인 도구 및 컴파일러(bash 셸 및 GNU 컴파일러 체인 포함)의 모음입니다. 또한 Linux 전용 API를 호출하는 프로그램을 컴파일할 수 있도록 호환성 계층을 제공하는 라이브러리가 포함되어 있습니다. Cygwin은 에뮬레이터나 가상 머신이 아니며 먼저 다시 컴파일하지 않고 Linux 바이너리를 Windows에서 실행할 수 없습니다.
Cygwin 설치 페이지를 방문하여 32비트 또는 64비트 설치 실행 파일을 다운로드하십시오(사용 중인 Windows 변형에 따라 다름). 설정 프로그램을 실행합니다. 다음을 클릭하고 다시 다음을 클릭합니다("인터넷에서 설치"). 기본 디렉토리는 "C:\cygwin"입니다. 필요한 경우 변경할 수 있지만 특별히 변경해야 하는 경우가 아니면 기본값이 가장 좋습니다. 다음, 다음, 다음을 다시 클릭합니다.
Cygwin 프로젝트에는 전 세계에 미러 사이트가 있습니다. 귀하의 위치에 가장 적합하다고 생각되는 것을 선택하고 다음을 클릭하십시오. 이제 설치할 패키지를 선택해야 합니다. Windows에서 간단한 Linux 프로그램을 컴파일하려면 C 및 C++ 컴파일러를 제공하는 GCC(GNU Compiler Chain)가 필요합니다.
검색 상자에 "gcc"를 입력한 다음 패키지 목록에서 "개발" 옆에 있는 작은 더하기 기호를 클릭합니다. "gcc-core" 및 "gcc-g++"를 찾아 각각에 대해 "건너뛰기"를 클릭합니다. "건너뛰기"라는 단어는 "Bin?"의 버전 번호와 "n/a" 기호로 변경됩니다. 열이 체크박스로 바뀝니다. 검색 상자에 "make"를 입력하고 "Devel"에서 "make"를 찾으십시오. "건너뛰기"를 클릭하여 설치를 표시합니다. "wget"을 검색하고 "웹"에서 설치하도록 표시합니다. 아래 예제를 작성하려면 "libiconv;"도 필요합니다. 그것을 검색하고 설치를 위해 표시하십시오.
다음을 클릭합니다. 그런 다음 설치 프로그램은 종속성을 해결하기 위해 설치해야 하는 다른 패키지를 확인합니다. 다음을 클릭하여 권장 사항을 수락합니다.
모든 패키지가 다운로드 및 설치되면 설치 프로그램이 종료될 때까지 마지막 단계를 따르십시오. "Cygwin 터미널"을 시작하여 Linux와 유사한 개발 환경으로 들어갑니다. 터미널에서는 "dir"과 같은 Windows 명령을 사용하지 않고 "ls"와 같은 쉘 명령을 사용합니다.
Windows에서 Linux 프로그램을 컴파일하는 방법을 보여주기 위해 W3의 HTML-XML 패키지를 사용합니다. 할 수 있는 일을 보려면 명령줄에서 HTML 및 XML 파일을 조작하는 방법을 참조하십시오.
"wget"을 사용하여 소스 파일 다운로드:
wget https://www.w3.org/Tools/HTML-XML-utils/html-xml-utils-6.7.tar.gz
이제 아카이브 파일의 압축을 풉니다.
tar -zxf html-xml-utils-6.7.tar.gz
소스 파일은 이제 "html-xml-utils-6.7" 디렉토리에 있습니다. 해당 디렉토리를 입력하십시오:
cd html-xml-utils-6.7
파일을 빌드하기 전에 "configure" 셸 스크립트를 실행하여 이 빌드 환경에 적합한 Makefile(빌드 지침)을 생성해야 합니다. 이것은 소스에서 패키지를 빌드할 때 Linux(및 Cygwin)에서 일반적인 단계입니다.
./configure
"구성"이 완료되면 "make"를 사용하여 빌드를 시작할 수 있습니다.
make
빌드가 부분적으로 실패합니다. 다음에 무엇을 해야 할지 두 가지 생각이 들었습니다. 다른 프로젝트로 전환하여 소스에서 빌드하거나 HTML-XML-utils와 전투를 벌일 수 있습니다. 나는 Cygwin에서 Linux 프로그램을 컴파일하려고 할 때 모든 것이 공원에서 걸어 다닐 수 있는 것은 아니라는 것을 보여주기 때문에 후자를 선택했습니다. 이 특정 문제에 대한 해결책은 간단합니다. 오류 메시지는 링커가 "iconv" 라이브러리를 찾을 수 없음을 보여줍니다. link 명령을 간략히 살펴보면 라이브러리가 지정되지 않았음을 알 수 있습니다. 빠르고 더러운 해결책은 명령을 수동으로 실행하고 링커에 libconv를 사용하도록 지시하는 것입니다. 이 문제를 해결하는 "적절한" 방법은 Makefile 등을 조사하여 작동하지 않는 이유를 찾는 것입니다.
다음 명령을 실행하고 끝에 "-licov"가 포함된 것을 확인합니다.
gcc -g -O2 -o hxindex.exe hxindex.o scan.o html.o openurl.o url.o heap.o class.o errexit.o connectsock.o types.o tree.o genid.o dtd.o headers.o dict.o fopencookie.o -liconv
"hxindex.exe" 파일이 빌드되면 "make"를 다시 입력하여 나머지 빌드를 계속할 수 있습니다. "make"가 작동하는 방식은 빌드된 것과 빌드되지 않은 것을 확인한 다음 적절한 지점에서 빌드 프로세스를 계속하는 것입니다. "hxindex.exe"를 수동으로 빌드했기 때문에 "make"는 목록의 다음 바이너리로 계속 진행됩니다.
"make"가 완료되면 html-xml-utils-6.7 디렉토리에 모든 .exe 파일이 생깁니다.
Cygwin을 사용하는 데 문제가 있는 경우 FAQ와 설명서를 확인해야 합니다. 그렇지 않으면 프로젝트에 메일링 리스트 세트가 있습니다. 위에 설명된 단계에 문제가 있는 경우 아래의 의견 섹션을 사용하십시오.