4

Visual Studio 2010를 사용하여 결국 Linux에서 실행될 C++ application을 만들고 싶습니다.는 Visual Studio 2010에서 성공적으로 컴파일 될 때 C++ 소스 코드를 Linux로 이식 할 수 있습니다.

알고 있어야하는 호환성/버전 문제가 있습니까? WindowsLinux에서 어떤 컴파일러를 사용해야합니까?

+0

#include 에 해당하는 Linux가 없으므로 Linux 용으로 빌드 할 때 관련 표준 헤더를 모두 포함해야합니다. 게다가 ANSI C++은 괜찮을 것입니다. – Muggen

답변

6

표준을 사용하고 플랫폼 특정 확장을 사용하지 않는 한 컴파일러는 중요하지 않습니다. 시스템 특정 시설 (네트워킹, 파일 시스템 ...)이 필요하면 boost과 같은 추상화 계층을 사용해보십시오.

3

표준 C++을 사용하십시오. __int64 또는 플랫폼 관련 외부 라이브러리와 같은 컴파일러 종속 기능을 사용하지 마십시오.

+0

+1. __int64 대신 # 을 #include 수 있습니다. – Muggen

+0

@Muggen : IIRC stdint.h는 VC++에서 지원되지 않습니다. 사용할 수있는 드롭 인 대체가 몇 가지 있습니다. –

+0

@Matteo : 최신 VC++이거나 그렇게 말했습니다. C++ 0x를 향한 드라이브의 일부. –

4

불행히도 알고 있어야 할 문제가 많이 있습니다. 다른 사람들이 지적한 것처럼 가장 중요한 점은 표준 C++과 함께 타겟팅하는 모든 플랫폼에 이식 가능한 라이브러리 만 사용한다는 것입니다. 하지만 당신을 물리는 다른 많은 것들도 있습니다. 다른 라인 엔딩 (Windows는 \ r \ n, 유닉스 변형은 일반적으로 \ n을 사용합니다), 다른 데이터 타입 크기 등이 있습니다. 더 일반적으로 이식성을 유지하려는 경우, 엔디안, 바이트 순서, 다른 파일 시스템이 작동하는 방식 등에 따라 다릅니다.

기본적으로 가장 중요한 것은 여러분이 목표로 삼고있는 모든 시스템에 익숙해지는 것입니다. 을 하나의 시스템에 작성한 다음 다른 시스템에서 고통없이 컴파일 할 수 있어야합니다. 대신 모든 관련 시스템에서 첫날부터 컴파일하고 모든 시스템에서 계속 작동하는지 확인하십시오. CMake (http://www.cmake.org)와 같은 크로스 플랫폼 구축 시스템을 살펴 보는 것이 좋습니다. 내 경험에서 고통의 세계를 구할 수 있습니다. 도움을받을 수 있다면 항상 여러 플랫폼에서 makefile을 유지해야 할 필요가 없습니다.

관련 문제