1. gcc를 이용한 컴파일
- gcc 기본 옵션 -o, -c, -D, -I, -L, -l 옵션 의미 및 사용법
- 여러개의 파일로 이루어진 프로그램 컴파일
2. make를 이용한 컴파일
- 간단한 makefile을 만들어 make를 이용하여 프로그램 컴파일
- hello.c 파일을 만든다
- 다음 내용을 Makefile이라는 이름으로 hello.c 소스코드가 있는 디렉토리에 만든다CC=gcc
hello:hello.o
$(CC) -o hello hello.o # <- 이 라인은 앞에 TAB으로 시작해야 함
hello.o:hello.c
$(CC) -c -o hello.o hello.c # <- 이 라인은 앞에 TAB으로 시작해야 함
clean:
rm -f hello.o # <- 이 라인은 앞에 TAB으로 시작해야 함
rm -f hello # <- 이 라인은 앞에 TAB으로 시작해야 함- "make" 명령으로 컴파일한다
- 컴파일 된 파일을 확인 및 실행해본다
- "make clean" 명령으로 컴파일된 파일들을 제거한다
- 파일이 제거된 것을 확인한다
- Makefile을 수정하여 Step-5 "1. gcc를 이용한 컴파일"에서 만든 프로그램에 맞게 수정하고, 테스트한다
3. gcc 옵션
-o 옵션 : gcc에서 만들 실행 파일명을 정하는 것. 안지정하면 a.out
%gcc -o filter filter_driver.c define_stack.c global_var.c
-c 옵션 : 컴파일하지만 링크하지는 않는 다는 것을 의미
%gcc -c filter_driver.c
-D 옵션 : 소스코드의 #define 문과 같다. 심볼에 대한 값을 지정
% gcc -c -DDOC_FILE=\"info\" -DUSE_POLL filter_driver.c
첫 번째 -D 옵션은 DOC_FILE 을 info 라는 문자열로 대치한다는 것
두 번째 -D 옵션은 USE_POLL 심볼을 정의한다.
-I 옵션 : 헤더파일이 위치한 디렉토리 지정
% gcc -c -I../headers filter_driver.c
-l 옵션 : 라이브러리를 지정. 파일명과 함께 붙여 쓴다.
% gcc -o plot main.o plot_line.o -lm
-lm 옵션은 수학 라이브러리를 포함한다는 것을 지정
-L 옵션 : 라이브러리 폴더를 찾아서 지정
% gcc -o plot -L/src/local/lib main.o plot_line.o -lm
-E 옵션 : 프로그램을 컴파일 하는 대신 전처리된 코드를 표준 출력으로 내보냄 <전처리>
-S 옵션 : 어셈블리 언어로 나온 결과를 저장 .c 대신 .s 가 붙는 파일을 만들어 낸다.<컴파일>
-c 옵션 : .o 로 끝나는 오브젝트 파일 생성 <어셈블>
[ C 언어 옵션 ]
-v 옵션 : (verbose) 컴파일러의 버전과 각 단계에서 실행하는 자세한 사항을 출력 (어떤 옵션으로 컴파일 하였는지)
-w 옵션 : 모든 경고 메시지가 나오지 않도록
-W 옵션 : 합법적이지만 다소 모호한 코딩에 대하여 부가적인 경고 메시지를 출력
-Wall 옵션 : 모호한 코딩에 대하여 훨씬 더 자세한 경고 메시지를 출력
[ 라이브러리 지정 옵션 ]
-static 옵션 : 공유 라이브러리가 아닌 정적 라이브러리와 링크
-shared 옵션 : 가능한 한 공유 라이브러리와 링크하고 공유 라이브러리가 없는 경우에는 정적 라이브러리와 링크
[ 디버깅, 프로파일링 옵션 ]
-p 옵션 : 프로그램을 prof 로 프로파일링 할 수 있도록 링크. mon.out 파일 생성됨. 프로그램 실행 통계 수치를 담고 있다.
추가 참고 자료 : gcc와 make 강좌




