Makefile로 기초적인 크로스컴파일
프로그래밍/Embedded System 2009. 3. 12. 17:04 |리눅스에서 사용되는 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 main.o : main.c hello.o : hello.c cls : |
위에 파란색으로 색칠된 구문 아래에는 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 파일이 정상적으로 동작하는지 확인하도록 한다.