본문 바로가기
dev, tech/embedded

<img src="http://blogimgs.naver.com/nblog/ico_scrap01.gif" class="i_scrap" width="50" height="15" alt="본문스크랩" /> 크로스 컴파일과 툴 체인

by 구띵 2006. 6. 10.
 

  1. 크로스 컴파일

1) 크로스 컴파일의 정의

   크로스 컴파일은 하나의 시스템에서 실행되는 컴파일러가 다른 시스템에서 사용될 실행 파일을 만들고 이 시스템이 같은 운용 환경을 사용할 수 없을 때 발생한다. 하나의 예로, 호스트에서 C언어나 어셈블러로 작성된 소스 코드를 호스트와 다른 기종에서 사용될 수 있는 기계어로 번역할 때 사용한다. 또한 목표 시스템에 컴파일 툴이 없거나 개발자가 호스트 시스템의 강력한 퍼포먼스 또는 방대한 리소스를 사용할 때도 유용하다.


  일반적으로 컴파일러는 자신의 시스템에 맞는 바이너리코드를 만든다. 예를 들어 x86의 시스템에서 gcc를 사용하여 컴파일을 하게 되면, x86의 바이너리가 생긴다. 그러므로 타겟 보드에서 직접 응용프로그램이나 커널 컴파일을 할 수가 없다. 이유는 저장 할 수 있는 디스크 공간이 매우 부족하기 때문이다. 그래서 타겟용 커널 및 응용프로그램을 개발하기 위하여 호스트 시스템에 타겟용 크로스 컴파일 환경을 구축한다. x86머신에서 ARM용 바이너리 코드를 만들어 주는 것이 크로스컴파일러 이다.


 

 어셈블러(assembler)

 컴파일러 툴 체인의 백 엔드의 일부

 

 링커(linker)

 컴파일러 툴-체인 백 엔드의 또 다른 일부

 

 스트링 같은 실행 파일과 라이브러리를 조작하기 위한 기본 툴

<크로스 컴파일러의 구성>



  프로그램들은 한 컴퓨터에서 컴파일이 되고, 그런 다음 다른 컴퓨터로 분산되어 사용된다. 호스트 시스템(컴파일러가 실행되는 시스템)과 목표 시스템(결과 프로그램이 실행 될 시스템)이 서로 호환되지 않는 환경일 때 이 프로세스는 크로스 컴파일(cross compilation)이라고 일컬어진다.


2) 크로스 컴파일의 필요성

  크로스 컴파일은 다음과 같은 이유에서 그 필요성이 대두된다.

  • 목표 시스템에 사용할 수 있는 컴파일 툴이 없을 경우

  • 호스트 시스템에 목표 시스템 보다 훨씬 빠르거나 방대한 리소스를 가지고 있을 경우


  2. Tool chain 이란?


1) Tool chain의 정의

  Tool chain이란 타겟 디바이스의 소프트웨어 개발을 진행하기 위해 필요한 호스트 시스템의 크로스 컴파일 환경을 말한다. Tool-chain은 각종 소스들을 컴파일하고 빌드하여 실행 바이너리를 생성하는 데 필요한 각종 유틸리티 및 라이브러리의 모음이다. 기본적으로 어셈블리, 링커, C 컴파일러, C 라이브러리 등으로 구성되어 있다.


2) Tool chain의 구성


  • GNU에서 제공하는 Tool-chain은 다음과 같다.

  - GNU GCC compilers for C, C++

  - GNU binary utilities (assembler, linker various object file utilities)

  - GNU C library


  • XScale(PDA용 intel CPU)에 사용하기 위한 ARM tool chain은 다음과 같은 사항으로 구성되어 있다.

  - binutils-arm-2.11.2 : 유틸리티

  - gcc-arm-2.95.3 : 컴파일러

  - glic-arm-2.2.3 : 라이브러리



 ■ 참고 문헌

   ▪ IBM - http://www-128.ibm.com

   ▪ (주)한빛 미디어 - http://network.hanbitbook.co.kr/

   ▪ 네이버 - http://blog.naver.com/kcj21c?Redirect=Log&logNo=110002195343

댓글