(1)  C 컴파일러 - gcc


○ 2011/09/29 - [L inux /Compile] - GCC(GNU Compiler Collection)
○ 2011/10/06 - [L inux /Compile] - 크로스 컴파일 (Cross Compile)
○ 2011/10/14 - [L inux /Compile] - 컴파일 (Compile)
○ 2011/10/14 - [L inux /Compile] - 컴파일(Compile)과정
○ 2011/10/14 - [L inux /Compile] - 컴파일(Compile)과정 - cc1 -E에 의한 전처리 과정
○ 2011/10/20 - [L inux /Compile] - 컴파일(Compile)과정 - cc1에 의한 어셈블리 소스 파일로 컴파일
○ 2012/01/10 - [L inux /Compile] - 컴파일(Compile)과정 - as에 의한 기계어 코드 생성
○ 2012/03/22 - [L inux /Compile] - 컴파일(Compile)과정 - collect2에 의한 링킹 과정

○ 컴파일 결과 파일 (-o 옵션)
: 컴파일 결과로 만들어지는 실행 파일의 이름을 지정한다.

○ 목적파일 생성 (-c 옵션)
: 전처리기, 컴파일, 어셈블까지의 과정을 거쳐 목적 파일(.o)을 생성한다.
- c옵션으로 만들어진 목적파일은 여러개의 C소스 파일로 이루어진 프로그램을 컴파일 할 때 그 필요성이 부각된다.
- 특정 C소스 파일만 수정하여 재 컴파일 시 수정된 목적파일만을 다시 생성하여 컴파일하기 때문에 불필요한 작업을 줄일 수 있다.

○ 헤더 파일의 경로 (-I 옵션) - 대문자 i
:  컴파일러가 참조하기 위한 헤더파일의 경로를 지정한다. (C 컴파일러는 기본적으로 /usr/include/ 를 경로로 참조한다.)
- 임의로 만든 헤더 파일을 일반 헤더 파일과 같이 꺽인 괄호로 표현 하기 위해서는 -I 옵션을 사용해 경로를 추가 지정해야한다.
- 시스템 표준 디렉토리 참조 : #include <stdio.h>
- 현재 작업 디렉토리 참조 : #include "my.h"
- 옵션 적용 후 : #include <my.h>

○ 라이브러리 관련 옵션 (-l, -L 옵션)
: 자주 사용하는 함수를 컴파일하여 모아 놓은 라이브러리는 실행 파일을 만드는 단계에서 링크된다. gcc 컴파일러는 프로그램이 참조하는 라이브러리 파일의 경로를 /usr/lib를 기준으로 삼아서, 실행 파일을 만드는 단계에서 libc.a 라이브러리를 자동으로 링크시킨다.
- 그 밖의 라이브러리는 프로그램에서 사용하고 있음을 명시적으로 지정해야한다.
2011/09/29 - [P rogramming/Linux System] - 정적 라이브러리 와 공유 라이브러리
- l 옵션으로 라이브러리 명시하고, L 옵션으로 라이브러리 경로 추가한다.

○ 컴파일러 매크로 (-D 옵션)
: gcc 컴파일러의 명령어 라인에서 매크로를 정의 할 수 있도록 한다.
- gcc에서 '-DDEBUG'라는 옵션을 주면 컴파일 중에 있는 C언어 소스 코드의 맨 처음에 '#define DEBUG'라고 선언하는 것과 같은 의미.
- 또한 '-DYYYY=2013'라고 하면 C언어 소스 코드의 맨 처음에 '#define YYYY 2013'라고 선언하는 것과 동일한 결과를 얻는다.
- 이렇게 선택적 컴파일을 하는 경우에 많이 사용되는 옵션이다.

○ 라이브러리 관리 (ar 명령어)
: 라이브러리 관리를 위해 사용되는 명령어 ar의 세부 기능 설명.
- 명령 형식 : ar [option] [ar_file] [obj_file]
- 옵션
  -r : 아카이브(Archive)에 있는 특정 목적 파일을 새로운 버전으로 치환하거나 신규로 추가.
  -d : 아카이브에 있는 특정 목적 파일을 삭제.
  -t : 아카이브에 있는 목적 파일의 목록을 출력.
  -v : t 옵션과 함께 사용하여 목적 파일의 상세정보 출력.
  -s : 아카이브 내 목적 파일의 참조 속도를 높이기 위해 인덱스를 생성.
(Example)
- ar r libmy.a fun1.o fun2.o
- ar s libmy.a
- ar tv libmy.a


by 민트앤라떼 2013. 3. 3. 05:25