통상 (Visual Studio 기준으로 본다면) 프로젝트 빌드 플래폼은 3가지 중 하나를 선택하게 된다.
1) x86
2) x64
3) Any CPU
1, 2번은 특정 플래폼을 선택하는 셈이고, 3번은 런타임에 해당 구동 플래폼에 따라 동작하라는 것이다.
각 선택의 용도와 주의점은 다음과 같다.
1) x86
: 32-bit 환경을 대상으로 빌드. 64-bit 환경에서도 32-bit 소프트웨어가 구동되므로, 가장 안전한 옵션이라 할 수 있다.
2) x64
: 64-bit 환경을 대상으로 빌드. 구동 플래폼의 OS가 64-bit으로 확정된 경우, 성능의 최적화를 위해 사용할 수 있다.
다만, 64-bit의 플래폼을 활용할 수 있도록 구현된 소프트웨어인 경우에만 해당하므로, CPU overhead가 크면서 64-bit용으로 별도 구현된 경우가 아니라면 큰 의미 없다.
이 경우엔, 당연히, 32-bit 플래폼에서 구동되지 않으므로 필요 시 별도 버전을 만들어야 한다.
3) Any CPU
: 얼핏 보기엔 가장 호환성 높은 옵션으로 보인다. 일단 용도 자체는 그렇게 제공되는 것이 맞다.
그러나 Any CPU를 선택하는 프로젝트라면 64-bit 최적화가 되어 있을리도 없고(32-bit을 대응하는 코드이기도 해야 하니까),
import하는 외부 라이브러리/DLL이 특정 플래폼만 지원하는 경우엔 'Any CPU'가 되지 않는다. 즉, 전체 소프트웨어는 Any CPU처럼 보이지만, 런타임에 타겟 플래폼 불일치로 문제가 생길 수 있다는 뜻.
따라서 64-bit처럼 설치가 되더라도 64-bit스럽게 동작하지도 않을 것이며, 외부 모듈 의존성이 있는 프로젝트의 경우 32-bit 또는 64-bit 전용이 아닌지 확인해야 하는 불편이 따른다. (만약 별도 dll로 제공된다면 링크 옵션을 따로 잡아줘야 하는 번거로움은 보너스)
결국 1) x86 base로 빌드하는 것이 어느 경우든 안전하다는 결론.
(단, 이건 Visual Studio 얘기니까, 다른 빌드 툴을 사용하거나 다른 OS 대상일 땐 각자의 사정에 따름.)
참고: http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=17&MAEULNo=8&no=126063&ref=126062
'Work' 카테고리의 다른 글
ESS 전망 (0) | 2015.03.31 |
---|---|
고민 연장 (0) | 2014.10.24 |
전기차 배터리 관리 시스템(BMS) 기술동향 (0) | 2014.10.21 |
android Preference xml attributes (0) | 2012.04.30 |
Summary of my work experience (0) | 2012.04.06 |