Programming/C

Linux gcc Compile MakeFile

Tribal 2016. 11. 20. 15:07
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.SUFFIXES : .c .o
 
OBJECTS = main.o test1.o test2.o test3.o
SRCS = main.c test1.c test2.c test3.c
 
CC = gcc
CFLAGS = ---mpreferred-stack-boundary=2
 
TARGET = test
 
$(TARGET) : $(OBJECTS)
        @echo "------------------------------------"
        @echo [Complie] Make Test 
        $(CC) -o $(TARGET) $(OBJECTS)
        @echo [OK] Make Test
        @echo "------------------------------------"
        rm -rf $(OBJECTS)
 
clean :
        rm -rf $(OBJECTS) $(TARGET)
 
new :
        @$(MAKE) -s clean
        @$(MAKE) -s
 
main.o : define.h main.c
test1.o : define.h test1.c
test2.o : define.h test2.c
test3.o : define.h test3.o
cs


.SUBFIXES : 확장자

OBJECTS : 오브젝트 파일

SRCS : 소스 파일

CC : 컴파일러

CFLAGS : 컴파일러 옵션

TARGET : 최종적으로 생성되는 파일명


$(TARGET) : $(OBJECTS) => 컴파일할 내용이 들어가 있음

clean : 파일 정리

new : 파일을 새로 작성할 때 할 내용


.o : 오브젝트 파일 컴파일 시 어떻게 컴파일 할건지


자세한 내용은 생략... 적당히 파일 이름만 바꿔써도 잘 돌아감


사용방법

1
2
3
$ vim MakeFile
...............        // MakeFile 내용 작성
$ make
cs

※ make랑 make install이랑 좀 다른거임, 구글에 검색하면 잘 설명되어 있음


에러 해결 방법

모르는 에러가 하나씩 발생할 때 마다 정리...


missing separator 에러

1
2
$ make
Makefile:7*** missing separator.  Stop.
cs

7번째 줄에 Tab(\t)이 제대로 되지 않아 에러가 발생한 것이다. 7번째 줄에 Tab을 넣어주면 해결된다.


※ Tab을 했는데도 에러가 발생하는 경우 : vim 설정으로 Tab 간격을 4로 설정하여 Tab을 한 번한 경우, 위 에러가 발생하더라. 이런 경우는 그냥 Tab을 한 번 더 넣어서 본래 기본 Tab 간격처럼 맞춰주면 된다.