일단 ARM 프로세서용 Tool-Chain 을 사용하는 가장 쉽고 빠른 방법은 해당 프로세서 혹은 키트 업체로부터 이미 빌드(build)되어 있는 Tool-Chain 압축 파일을 받아다가 해당 경로에 압축을 풀고 PATH 설정하여 사용하는 방법이 가장 빠르고 쉽습니다.
지난 3월 제가 세미나 때 말씀 드렸던 것처럼 Tool-Chain 은 기본적으로 임베디드 SW 이든 그렇지 않은 SW 이든 간에 어떤 SW 를 개발하더라도 반드시 다음과 같은 3가지 tool 들이 마치 chain 처럼 묶여서 꼭 따라다녀야 한다고 해서 붙여진 이름입니다.
(Cross) Compiler : gcc 혹은 arm-linux-gcc
System Library : 일반적으로 header (*.h 파일) 들을 코딩할 때 필요한 User Library 라고 한다면, System Library 는 이렇게 컴파일된 실행 코드가 실행될 때 필요한 라이브러리를 뜻합니다.
일반적으로 텍스트 형식의 헤더 파일과 달리 *.a (Static Library) 나 *.so (Shared Library) 확장자로 끝나는 바이너리 파일로 되어 있으며 우리가 흔히 사용하고 있는 printf() 나 scanf()
같은 Wrapping 함수의 원형인 시스템 콜(System Call) 함수들의 정의(define)를 담고 있고, 프로세서의 동작 모드(Operation mode)를 User mode 에서 Supervisor mode 로 변경하기 위한
소프트웨어 인터럽트 발생 명령어(CPU Instruction) 등을 포함하고 있습니다.
Binutils : 1번과 2번에 의해 컴파일된 바이너리(Bin) 결과물(실행 코드)에 대해 필요에 따라 후 처리 작업을 할 때 사용되는 유틸리티들(utils)을 묶어 Binutils 라 부르며, 대표적으로 strip 이나 objcopy 등이
있습니다.
위에 열거된 1, 2, 3번은 각각 하나의 훌륭한 오픈 소스 프로젝트들로서 소스가 오픈되어 있기에 가져다가 컴파일 할 수 있습니다.
그러나, 서로 간에 버전이나 컴파일 환경 등이 서로 맞지 않을 경우 빌드(build)되지 않을 수가 있으며, 빌드 하는 순서 역시 1번 약식 컴파일 -> 2번 컴파일 -> 1번 제대로 컴파일 -> 3번 컴파일 등 과정도 매우 복잡합니다.
따라서, 보통 삼성전자와 같은 프로세서(CPU) 제조 업체의 경우 해당 프로세서에 최적화 된 Tool-Chain 을 미리 빌드하여 압축 파일 형태로 제공하고 있으며 drake_kr 님이 구매하신 MV2530 에 사용된 MP2530F 라는 프로세서 역시 별도로 빌드된 Tool-Chain 이 있으니 그걸 가져다가 PATH 걸어 사용하시는 게 가장 좋습니다.
다만 MP2530F 라는 프로세서가 제조업체의 부도(?)로 인해 현재 더 이상 해당 칩을 생산하고 있지 않은데다 기술 지원 역시 지원하고 있지 않기에 제 개인적으로는 그다지 추천해 드리고 싶지 않은 프로세서입니다. ARM9 Dual Core 라는 이점으로 시작된 칩이었지만 ARM9 까지의 가장 대표적인 단점인 Floating 연산의 SW 처리가 여전히 걸림돌인지라 요즘 출시되고 있는 ARM11 이나 ARM Cortex-A8/9 등에 비해 눈에 띄게 성능이 떨어지거든요.
[quote="drake_kr":1yn9crfm]
gcc(/usr/bin에 있건 /usr/local/bin에 있건 사용자 디렉토리에 있건) -o hello hello.c -I(크로스 컴파일러용 include 파일 디렉토리) -L(크로스 컴파일러용 라이브러리 디렉토리)
이외에도 정리할 것이 여러가지가 있겠습니다만, darwin이 아닌 다른 환경에서 컴파일러를 컴파일(!)하면서 확실하게 알아두어야겠지요… [/quote:1yn9crfm]
참고로 아시다시피 /usr/bin 에 있건 /usr/local/bin 에 있건…이 이미 빌드되어 있는 Tool-Chain 에선 무척 중요합니다.
그렇지 않으면 #include <stdio.h> 에서 해당 헤더 파일을 컴파일러가 찾아 가서 Copy & Paste 를 할 수가 없거든요. ㅠ.ㅠ
[quote="drake_kr":1yn9crfm]
저는… 400mhz짜리 멘도시노 셀러론에 메모리 64MB인놈도 지금 서버로 활용하고 있는놈이라…