'크로스 컴파일'에 해당되는 글 1건
- 2009.03.31 순대보드 CrossCompile 환경 - 1
2009. 3. 31. 20:44
순대보드 CrossCompile 환경 - 1
2009. 3. 31. 20:44 in 혼자서 놀기.../순대보드(AHAV9302)
임베디드 작업은 'Cross Compile(크로스 컴파일)'환경이 갖추어진 상태라야 비로소 제대로 된 작업을 할 수 있다.
근데... '크로스 컴파일' 환경이란 뭐지? -_-
일반적으로 사용하는 데스크톱의 환경을 네이티브 개발환경이라고 한다. 해당하는 플랫폼에서 개발을 하고, 개발을 한 그 플랫폼에서 이런 저런 것들을 실행시키는 환경을 말한다.
쉽게 설명하자면, 리눅스나 윈도우즈가 설치된 데스크톱 기계(x86)에서 어떠한 프로그램을 작성하고, 작성한 프로그램을 동일한 플랫폼(x86)에서 실행시키는 것을 생각하면 될 것이다.
크로스 컴파일환경은 이와는 조금 다르다.
일반적으로 프로그램등을 작성할 때에는 흔히 사용하는 데스크톱(x86) 환경에서 작성을 하게 된다. 하지만 실제 작성한 프로그램 등은 개발한 플랫폼에서 동작하는 것이 아니고, arm 과 같은 별도의 임베디드 기계에서 동작을 하게 된다. 실제 프로그램이 동작해야할 플랫폼에 맞게 컴파일을 해주도록 해주는 녀석을 크로스 컴파일러라고 한다. 그리고 이런 크로스 컴파일을 할 수 있도록 해주는 환경을 크로스 컴파일 환경이라고 한다.
에이.. 그냥 arm 과 같은 임베디드 기계에서 프로그램을 작성하고, 컴파일을 하면 되지 않을까? 라고 생각 할 수도 있지만, 실제 임베디드 기계가 가지고 있는 성는은 데스크톱에 비하면 매우 빈약하다. 좀더 효과적인 작업을 하기 위해 성능이 좋은 데스크톱을 빌려 작업을 한다라고 생각하면 편할 듯 하다.
사실.. 본인도 잘 모른다. 그냥 그런 것 같다 ㅎㅎ
서론이 길긴 했는데.. 그럼 일단 순대보드(AHAV9302)의 크로스 컴파일을 위한 환경을 만들어 보려 한다. 크로스 컴파일을 위한 전용 디렉토리를 만들고, 몇 가지의 환경변수를 등록할 것이다.
'당근이의 AVR 갖구 놀기'에 설명된 대로 따라할 것이다.
리눅스 기계의 /opt 디렉토리로 이동을 하여 다음의 디렉토리들을 생성해 준다.
/opt/arm9sbc
/opt/arm9sbc/ahav
/opt/arm9sbc/ahav/backup => 포팅할 패키지들과 패치들을 보관하는 곳.
/opt/arm9sbc/ahav/build => 컴파일 시 사용할 임시 디렉토리.
/opt/arm9sbc/ahav/host => 컴파일 시 필요한 헤더와 명령어들을 임시로 보관하는 곳.
/opt/arm9sbc/ahav/images => 램디스크 이미지를 생성하는 곳.
/opt/arm9sbc/ahav/kernel => 커널 컴파일을 하는 곳.
/opt/arm9sbc/ahav/kernel/.post => 후기 작업을 위해서 필요한 곳...??
/opt/arm9sbc/ahav/nfs => NFS를 사용할 경우에 사용.
/opt/arm9sbc/ahav
/opt/arm9sbc/ahav/backup => 포팅할 패키지들과 패치들을 보관하는 곳.
/opt/arm9sbc/ahav/build => 컴파일 시 사용할 임시 디렉토리.
/opt/arm9sbc/ahav/host => 컴파일 시 필요한 헤더와 명령어들을 임시로 보관하는 곳.
/opt/arm9sbc/ahav/images => 램디스크 이미지를 생성하는 곳.
/opt/arm9sbc/ahav/kernel => 커널 컴파일을 하는 곳.
/opt/arm9sbc/ahav/kernel/.post => 후기 작업을 위해서 필요한 곳...??
/opt/arm9sbc/ahav/nfs => NFS를 사용할 경우에 사용.
/opt 디렉토리로 이동 한 후 아래와 같이 입력을 한다.
$ sudo mkdir arm9sbc
[sudo] password for ID :
$ sudo chown ID:users arm9sbc
[sudo] password for ID :
$ sudo chown ID:users arm9sbc
위와 같이 해주는 것으로 생성한 arm9sbc는 root 계정이 아닌 일반 사용자 계정으로 사용을 할 수 가 있다.
ID는 사용자가 접속시 사용하였던 ID가 된다.
참고로.. 이것은 ubuntu 리눅스에서만.. 이런식으로 사용한다.
mkdir 명령을 사용하여 위의 디렉토리들을 생성해 준다.
$ mkdir arm9sbc/ahav
$ mkdir arm9sbc/ahav/backup
...
$ mkdir arm9sbc/ahav/nfs
$ mkdir arm9sbc/ahav/backup
...
$ mkdir arm9sbc/ahav/nfs
/opt/arm9sbc/ahav에 환경변수를 설정한다.
$ cd /opt/arm9sbc/ahav
$ vi .initrc-ahav
export PATH=/usr/local/arm/4.1.1-920t/bin:/usr/local/arm/3.2.1-elf/bin:${PATH}
export AHAV_PROJECT_NAME="AHAV9302"
export AHAV_BASE_DIR=/opt/arm9sbc/ahav
export AHAV_BACKUP_DIR=${AHAV_BASE_DIR}/backup
export AHAV_BUILD_DIR=${AHAV_BASE_DIR}/build
export AHAV_HOST_DIR=${AHAV_BASE_DIR}/host
export AHAV_IMAGES_DIR=${AHAV_BASE_DIR}/images
export AHAV_ROOT_DIR=${AHAV_IMAGES_DIR}/root
export AHAV_KERNEL_DIR=${AHAV_BASE_DIR}/kernel
export AHAV_KERNEL_VER="2.6.22.8"
export AHAV_NFS_DIR=${AHAV_BASE_DIR}/nfs
$ chmod 750 .initrc-ahav
$ . .initrc-ahav
$ vi .initrc-ahav
export PATH=/usr/local/arm/4.1.1-920t/bin:/usr/local/arm/3.2.1-elf/bin:${PATH}
export AHAV_PROJECT_NAME="AHAV9302"
export AHAV_BASE_DIR=/opt/arm9sbc/ahav
export AHAV_BACKUP_DIR=${AHAV_BASE_DIR}/backup
export AHAV_BUILD_DIR=${AHAV_BASE_DIR}/build
export AHAV_HOST_DIR=${AHAV_BASE_DIR}/host
export AHAV_IMAGES_DIR=${AHAV_BASE_DIR}/images
export AHAV_ROOT_DIR=${AHAV_IMAGES_DIR}/root
export AHAV_KERNEL_DIR=${AHAV_BASE_DIR}/kernel
export AHAV_KERNEL_VER="2.6.22.8"
export AHAV_NFS_DIR=${AHAV_BASE_DIR}/nfs
$ chmod 750 .initrc-ahav
$ . .initrc-ahav
여기까지 진행을 하면, 크로스 컴파일 환경을 위한 사전 작업을 마친 것이다.
사전 작업이라고 해봤자... 크로스 컴파일러를 설치할 경로 정도를 설정해 준 것이긴 하지만... -_-
다음 시간에 나머지 작업을 진행해야지...... 슬슬 귀찮아지는데... ㅜ
'혼자서 놀기... > 순대보드(AHAV9302)' 카테고리의 다른 글
순대보드 u-boot - 2 (0) | 2009.08.11 |
---|---|
순대보드 u-boot - 1 (4) | 2009.04.02 |
순대보드 CrossCompile 환경 - 2 (0) | 2009.04.01 |
순대보드 사전 작업?? (0) | 2009.03.30 |
순대보드 - AHAV9302 (2) | 2009.03.27 |