compilation은 native와 cross로 나뉩니다. native compilation는 컴파일 하는 환경과 실행하는 환경이 동일한 경우를 의미합니다. cross compilation은 반대로 크로스 컴파일은 컴파일 하는 환경과 실행하는 환경이 다른 경우입니다. 이때 환경의 기준은 매우 다양합니다. OS, CPU 사양 및 제조사 등의 차이를 기준으로 합니다. 예를 들어 윈도우PC에서 안드로이드 용 실행 파일을 만들 때, 맥PC에서 안드로이드 용 실행 파일을 만들 때, 윈도우PC에서 IOS용 실행 파일을 만들 때, 맥PC에서 IOS용 실행 파일을 만들 때 모두 다른 컴파일 환경을 통해야 합니다. 이를 크로스 컴파일이라고 합니다.