2012-01-27 3 views
4

대학 과정의 경우 Linux 및 Windows에서 모두 실행해야하는 http 서버를 작성해야합니다. 나는 모든 종류의 무거운 가상 환경을 처리 할 수 ​​있다고 생각하지 않는 겸손한 리눅스 머신을 가지고 있으며, 설치하는 번거 로움도 없습니다.Linux 및 Windows를 타겟팅하는 Linux에서 개발 환경 설정

짧은 코딩과 테스트 세션 (두 플랫폼에서 모두 후자) 사이에서 빠르게 교체 할 수있는 환경이 필요하기 때문에이 프로젝트는 처음으로 프로젝트를 개발하는 데 약 1.5 개월 정도 소요됩니다.

그래서이 상황에 가장 적합한 설정이 무엇인지 궁금합니다. 나는 와인에 대한 테스트가 괜찮을 것이라고 생각한다. (결국 현실 세계가 아니다.) 윈도우 타겟 부분을 위해 MinGW를 설치했다.

기본적으로 잘 작성된 간단한 메이크 파일로 내 문제를 해결할 수 있습니다 ... Linux 및 Windows 바이너리를 모두 빌드하고 각 폴더 (Windows 하위 트리의 Windows 하위 폴더)에 배치해야합니다. 모두 완료! 그러나 나는이 일에 매우 경험이 없다고 느끼고 어디서부터 시작해야할지 모르겠습니다. 어쩌면 매뉴얼을 만들자! :)

생각이나 제안이없는 것! 감사합니다.

(추신. 나는 당신이있어 :

답변

1

... 일식 완전히이 문제를 해결 스카이 넷과 같은 플러그인의 어떤 종류를 제공하지 않는 한. 편집자로 이맥스를 사용하거나 어쩌면 정력을 배울 계획입니다 바른 길. MinGW 덕분에 정말 복잡하지 않습니다. 기본적으로 두 가지가 필요합니다.

  1. 코드는 OS간에 호환되어야합니다. MinGW는 POSIX를 지원하지만 POSIX 인터페이스를 사용하거나 OS와의 인터페이싱을위한 호환성 레이어를 갖기 위해서는 아마도 Cygwin을 사용할 필요가있을 것이다. Cygwin을 사용하려고한다면 POSIX에 대해서만 코드를 작성할 수 있으며 호환성 레이어를 테스트하고 디버깅 할 필요가 없습니다. 또한 OS 별 외부 라이브러리를 사용하지 않도록하십시오. 휴대용이 아닌 코드는 종종 컴파일 오류를 발생 시키지만 어쨌든 응용 프로그램을 철저히 테스트해야합니다.

  2. Linux 및 Windows를 대상으로하는 툴 체인. 당신은 이미 그들을 가지고, 당신은 단지 그들을 정확하게 사용해야합니다. 일반적으로 교차 컴파일 중에 toolchain을 호출 할 때 $ (CROSS_COMPILE)와 같은 변수를 접두어로 사용합니다. 따라서 리눅스 용으로 컴파일 할 때 gcc, ld 등 (CROSS_COMPILE 변수는 비어 있음)을 호출하면 Windows 용으로 컴파일 할 때 예를 들어 호출합니다. i486-mingw32-gcc, i486-mingw32-ld 등, 즉 CROSS_COMPILE = i486-mingw32-이다. 아니면 단지 목표에 따라 CC, LD 등을 정의하십시오.

저는 리눅스에서 작은 게임을 썼고 Windows에서도 실행되었습니다. browse the code이라면 코드가 #ifdef 정글 (기본적으로 Linux 용 일부 추가 디버깅 기능이 활성화되어 있음) 옆에 있음을 알 수 있습니다. 또한 Makefile도 간단하며 크로스 컴파일에 대한 복잡한 처리가 필요하지 않고 무시할 수 있습니다 CC 등이 있어야합니다. 중요한 오픈 소스 소프트웨어가 이렇게 많이 쓰여 있으므로 (특히 데스크톱과 임베디드 장치에서 사용되는 소프트웨어) 빌드 환경을 올바르게 설정하는 방법에 대한 많은 예제를 찾아 볼 수 있어야합니다.

Windows에서 응용 프로그램을 테스트하는 데있어 가장 좋은 방법은 실제 Windows 컴퓨터를 어떻게 든 찾을 수 있다는 것입니다. 모든 것을 올바르게하면 Linux에서와 동일하게 실행되어야하며 두 OS 모두에서 응용 프로그램을 지속적으로 테스트 할 필요가 없습니다.Windows 컴퓨터에서의 테스트가 불가능한 경우 VM을 설치하는 것이 가장 바람직하지만 설치하기가 더 어려울 수 있습니다. Wine은 좋은 백업 계획이지만 Wine에서만 테스트 한 경우 Windows에서 응용 프로그램이 잘 작동하는지 확신 할 수 없다고 생각합니다.

+0

MinGW는 Windows 용 POSIX 구현을 언제 제공합니까? 참고?? –

+0

네 말이 맞아, 나는 Cygwin과 혼동했다. 수정 됨. – Antti