15장. GCC를 사용하여 코드 빌드
이 장에서는 소스 코드를 실행 코드로 변환해야 하는 상황을 설명합니다.
15.1. 코드 양식 간의 관계
사전 요구 사항
- 컴파일 및 연결의 개념 이해
가능한 코드 양식
C 및 C++ 언어를 사용하는 경우 다음 세 가지 형식의 코드가 있습니다.
C 또는 C++ 언어로 작성된 소스 코드는 일반 텍스트 파일로 표시됩니다.
일반적으로 파일은
.c,.
cc,.
cpp,.
h,.
hpp,.
i,.
inc
등의 확장 프로그램을 사용합니다. 지원되는 확장 기능 및 해석의 전체 목록은 gcc 도움말 페이지를 참조하십시오.$ man gcc
컴파일러 로 소스 코드를 컴파일 하여 생성된 개체 코드입니다. 이는 중간 형식입니다.
오브젝트 코드 파일은
.o
확장자를 사용합니다.개체 코드를 링커 와 연결하여 만든 실행 코드.
Linux 애플리케이션 실행 파일은 파일 이름 확장자를 사용하지 않습니다. 공유 오브젝트(library) 실행 파일은
.so
파일 이름 확장자를 사용합니다.
정적 연결을 위한 라이브러리 아카이브 파일도 존재합니다. 이는 .a
파일 이름 확장자를 사용하는 오브젝트 코드의 변형입니다. 정적 연결은 권장되지 않습니다. 16.2절. “정적 및 동적 연결”을 참조하십시오.
GCC에서 코드 양식 처리
소스 코드에서 실행 가능한 코드를 생성하려면 서로 다른 애플리케이션 또는 도구가 필요한 두 단계가 필요합니다. GCC는 컴파일러와 링커 모두에 대한 지능형 드라이버로 사용할 수 있습니다. 이를 통해 필요한 작업에 단일 명령 gcc
를 사용할 수 있습니다. GCC는 필요한 조치(compiling and linking) 및 해당 시퀀스를 자동으로 선택합니다.
- 소스 파일은 오브젝트 파일로 컴파일됩니다.
- 오브젝트 파일과 라이브러리가 연결되어 있습니다(이전 컴파일된 소스 포함).
1단계만 발생하거나, 2단계만 발생하거나, 1단계와 2단계 모두 발생하도록 GCC를 실행할 수 있습니다. 이는 입력 유형 및 요청된 출력 유형에 따라 결정됩니다.
대규모 프로젝트에는 일반적으로 GCC를 각 작업에 대해 별도로 실행하는 빌드 시스템이 필요하므로 GCC를 한 번에 모두 수행할 수 있더라도 컴파일 및 두 가지 작업으로 연결하는 것이 좋습니다.