'크로스 컴파일'에 해당되는 글 1건

  1. 2009.03.12 Makefile로 기초적인 크로스컴파일

리눅스에서 사용되는 Makefile을 작성하도록 한다. 작성환경은 아래와 같다.

실행운영체제 : uBuntu 8.0.4
보드 : ARM Board
Language : C/C++

main.c
#include <stdio.h>
#include <stdlib.h>

int hello();

int main() {
   printf("Hello World\n");
   hello();
   return 0;
}

hello.c
#include <stdio.h>
#include <stdlib.h>

int hello() {
   printf("Hi world\n");
   return 0;
}

위의 두개의 파일을 작성하고 동일 폴더에 넣도록 한다.

Makefile

all : main

main : main.o hello.o
      gcc -o main main.o hello.o

main.o : main.c
      gcc -c main.c

hello.o : hello.c
      gcc -c hello.c

cls :
      rm *.o
      clear


위에 파란색으로 색칠된 구문 아래에는 TAB키로 공백을 넣어줘야 한다. 만약 Space로 공백을 생성하면 안되므로, 주의하도록 한다.

 - all : main이라고 최종 컴파일이라고 선언
 - main : Function
 - cls : 오브젝트 파일 삭제와 동시에 화면정리(Ms-dos에서 cls와 동일한 명령어)

 
test@test-laptop:~/work$ ls
Makefile  hello.c  main.c
test@test-laptop:~/work$ make
gcc -c main.c
gcc -c hello.c
gcc -o main main.o hello.o
test@test-laptop:~/work$ make cls
rm *.o
cls



위의 과정을 보면 Makefile을 작성하기 나름이겠지만, 순차적으로 동작되는 것을 볼 수 있다.

make cls라고 쳐주면 Makefile 내에 cls라고 선언된 Function이 동작하게 되는데 확장자가 오브젝트인 파일은 모두 삭제라고 화면정리를 하게 된다.

위의 파일이 작성 완료 되었다면, Arm Board와의 연결한 뒤 생성된 main 파일이 정상적으로 동작하는지 확인하도록 한다.
Posted by 리트모스
: