임베디드 시스템을 개발할 때 일반적으로 호스트와 타겟이란 말을 사용하는데 이 말에 대해 알아보자.
호스트
임베디드 시스템을 개발하는 과정에서 프로그램을 개발하는 컴퓨터를 가리킨다. 예를 들어 ARM 프로
세서로 하드웨어를 꾸미고 여기에 리눅스를 OS로 사용하는 프로젝트를 생각해보자. 처음 하드웨어를
만들어 커널을 올리는 작업을 할 때 만들어진 하드웨어엔 아무 프로그램도 올라가 있지 않기 때문에
다른 곳에서 커널을 만들어 하드웨어에 심어줘야한다. 리눅스 커널을 만들어주는 시스템을 호스트라
고 한다. 보통은 PC에서 개발해 이식할 것이므로 PC가 호스트가 되겠다.
타겟
임베디드 시스템의 개발에서 만들어지는 하드웨어를 타겟이라한다. 타겟 시스템 이라면 만들어진 임
베디드 시스템을, 타겟 프로세서라면 만들어진 임베디스 시스템의 프로세서를 말한다고 여기면 될
것이다.
그렇다면 크로스 컴파일러는 무엇일까? 위에서 말한 대로 호스트에서 타겟에서 돌아가는 프로그램을 만들어
이식해 주는데 호스트와 타겟에 사용되는 프로세서가 다르다면?
필자는 호스트로 Athlon CPU를 사용하는 PC를 사용하고 있다. 여기에서 실행되는 gcc는 386, 486, 586, K6,
686을 지원한다. 그러나 임베디스 시스템에 사용되는 프로세서는 지원하지 않고 있다. 그러므로 프로그램을
컴파일해도 실제 임베디드 시스템에 사용된 프로세서에서는 실행할 수 없게된다.
그러므로 실행은 호스트에서되지만 만들어지는 코드는 타겟 시스템에서 돌아갈 수 있는 컴파일러가 필요해
진다. 이 것이 바로 크로스 컴파일러다[1].
3.1. 크로스?
임베디드 시스템을 개발할 때 일반적으로 호스트와 타겟이란 말을 사용하는데 이 말에 대해 알아보자.
호스트
임베디드 시스템을 개발하는 과정에서 프로그램을 개발하는 컴퓨터를 가리킨다. 예를 들어 ARM 프로 세서로 하드웨어를 꾸미고 여기에 리눅스를 OS로 사용하는 프로젝트를 생각해보자. 처음 하드웨어를 만들어 커널을 올리는 작업을 할 때 만들어진 하드웨어엔 아무 프로그램도 올라가 있지 않기 때문에 다른 곳에서 커널을 만들어 하드웨어에 심어줘야한다. 리눅스 커널을 만들어주는 시스템을 호스트라 고 한다. 보통은 PC에서 개발해 이식할 것이므로 PC가 호스트가 되겠다.
타겟
임베디드 시스템의 개발에서 만들어지는 하드웨어를 타겟이라한다. 타겟 시스템 이라면 만들어진 임 베디드 시스템을, 타겟 프로세서라면 만들어진 임베디스 시스템의 프로세서를 말한다고 여기면 될 것이다.
그렇다면 크로스 컴파일러는 무엇일까? 위에서 말한 대로 호스트에서 타겟에서 돌아가는 프로그램을 만들어 이식해 주는데 호스트와 타겟에 사용되는 프로세서가 다르다면?
필자는 호스트로 Athlon CPU를 사용하는 PC를 사용하고 있다. 여기에서 실행되는 gcc는 386, 486, 586, K6, 686을 지원한다. 그러나 임베디스 시스템에 사용되는 프로세서는 지원하지 않고 있다. 그러므로 프로그램을 컴파일해도 실제 임베디드 시스템에 사용된 프로세서에서는 실행할 수 없게된다.
그러므로 실행은 호스트에서되지만 만들어지는 코드는 타겟 시스템에서 돌아갈 수 있는 컴파일러가 필요해 진다. 이 것이 바로 크로스 컴파일러다[1].
주석
크로스(cross)란 말이 호스트와 타겟이 다른단 것을 나타낸다.
Recent Posts
Archive Posts
Tags