운영체제
윈도나 리눅스, 유닉스 등 운영체제의 종류도 많고 CPU architect 에 따라 32 bit 또는 64 bit 등의 환경 요건들을 프로그램 작성하기 전에 고려되어야 할 부분이다.
이러한 환경적 다양성은 컴파일러가 제공하는 define 값을 이용해 극복할 수 있다.
운영체제는 시스템 운영이라는 기본적으로 사용자가 컴퓨터를 사용할 수 있는 기반을 마련하고 있으며 대부분 사용자들은 이러한 운영체제 위에서 실행되는 응용 프로그램을 사용하려는 목적으로 컴퓨터를 사용한다.
그렇기 때문에 운영체제를 제작하는 입장으로는 사용자들이 여러 응용 프로그램을 사용할 수 있어야 이득이기 때문에 누구나 프로그램을 작성할 수 있게 운영체제를 제공하는 측에서 컴파일러를 같이 제공한다.
컴파일러
윈도는 visual c 컴파일러를 제공하고 있고 linux 는 gnu c 컴파일러를 제공하고 있다.
mac os 는 clang 컴파일러를 제공하고 있다.
c 언어 프로그래밍에 앞서 어떤 운영체제에서 개발할지와 어떤 컴파일러를 사용할 수 있는지 확인하도록 하자.
크로스 컴파일러
셋톱 박스나 휴대폰 등의 임베디드 기기에서 돌아가는 응용 프로그램을 작성할 때는 크로스 컴파일러를 사용해야 한다.
소스 -> 컴파일러 -> 실행파일
일반적으로 컴파일러는 컴파일러가 실행되는 운영체제에서 실행될 프로그램을 결과물로 배출한다.
하지만 셋톱 박스나 휴대폰은 자원이 넉넉지 않아 컴파일 환경을 구비하기 매우 힘들다.
때문에 비교적 자원이 넉넉한 PC 에서 컴파일 환경을 구축하고 결과물은 셋톱이나 휴대폰 등의 목표 기기에서 실행되는 파일을 배출하는 컴파일러를 사용한다.
만약 윈도에서 휴대폰용 응용 프로그램을 개발한다면 윈도에서 실행되면서 결과물은 휴대폰에서 실행할 수 있는 크로스 컴파일러가 있어야 한다.
일반적으로 크로스 컴파일러는 셋톱이나 휴대폰 보드를 제공하는 쪽에서 같이 제공한다.
댓글 없음:
댓글 쓰기