컴퓨터 지식 네트워크 - 컴퓨터 프로그래밍 - GCC 컴파일러란 무엇인가요?

GCC 컴파일러란 무엇인가요?

Linux 시스템의 GCC(GNU C Compiler)는 GNU가 출시한 강력하고 고성능의 멀티 플랫폼 컴파일러입니다. gcc는 다양한 하드웨어 플랫폼에서 실행 가능한 프로그램을 컴파일할 수 있는 슈퍼 컴파일러로, 일반 컴파일러보다 실행 효율성이 평균 20~30배 높습니다. Gcc 컴파일러는 C, C 언어 소스 프로그램, 어셈블러 프로그래머 및 대상 프로그램을 실행 파일로 컴파일하고 링크할 수 있습니다. 실행 파일 이름이 제공되지 않으면 gcc는 a.out이라는 파일을 생성합니다. Linux 시스템에서는 실행 파일에 통합 접미사가 없습니다. 시스템은 파일의 속성에 따라 실행 파일과 실행 불가능한 파일을 구분합니다. Gcc는 입력 파일의 유형을 구별하기 위해 접미사를 사용합니다. gcc에 따르는 몇 가지 규칙을 소개하겠습니다. 접미사가 .c인 파일은 C 언어 소스 코드 파일이고, 접미사가 .a인 파일은 대상 파일로 구성된 아카이브 파일입니다. 접미사가 .cx인 파일은 헤더입니다. 프로그램에 포함된 파일은 접미사가 .i인 파일은 전처리된 C 소스 코드 파일입니다. 접미사가 .m인 파일은 .o가 있는 Objective-C 소스 코드 파일입니다. 접미사가 컴파일된 대상 파일이고, 접미사가 .s인 파일은 어셈블리 언어 소스 코드 파일입니다. 접미사가 .S인 파일은 미리 컴파일된 어셈블리 언어 소스 코드 파일입니다. Gcc의 실행 프로세스 우리는 Gcc를 C 언어 컴파일러라고 부르지만, C 언어 소스 코드 파일에서 실행 파일을 생성하기 위해 gcc를 사용하는 프로세스는 단순한 컴파일 프로세스가 아니라 상호 연관된 네 가지 단계가 필요합니다. ), 컴파일, 어셈블리 및 연결. gcc 명령은 사전 처리를 위해 먼저 cpp를 호출하며, 소스 코드 파일에 있는 파일 include(include) 및 사전 컴파일된 명령문(예: 매크로 정의 등)을 분석합니다. 그런 다음 컴파일을 위해 cc1을 호출합니다. 이 단계에서는 입력 파일을 기반으로 접미사가 .o인 대상 파일이 생성됩니다. 어셈블리 프로세스는 어셈블리 언어의 단계를 위한 것으로서 작동하도록 호출합니다. 일반적으로 어셈블리 언어 소스 코드 파일과 접미사가 .S인 어셈블리 파일, 접미사가 .s인 어셈블리 언어 파일을 미리 컴파일하고 어셈블하여 .o를 생성합니다. 접미사가 붙은 대상 파일. 모든 대상 파일이 생성된 후 gcc는 ld를 호출하여 최종 중요한 작업을 완료합니다. 연결 단계에서는 모든 개체 파일이 실행 프로그램의 적절한 위치에 정렬됩니다. 동시에 프로그램에서 호출하는 라이브러리 기능도 해당 아카이브의 적절한 위치에 연결됩니다. Gcc의 기본 사용법과 옵션 Gcc 컴파일러를 사용할 때 일련의 필수 호출 매개변수와 파일 이름을 제공해야 합니다. Gcc 컴파일러에는 약 100개 이상의 호출 매개변수가 있는데, 그 중 대부분은 전혀 사용하지 않을 수도 있습니다. 여기서는 가장 기본적이고 일반적으로 사용되는 매개변수만 소개합니다. Gcc의 가장 기본적인 사용법은 다음과 같습니다: gcc [options] [filenames] 여기서 options는 컴파일러에 필요한 매개변수이고 filenames는 관련 파일 이름을 제공합니다. -c는 컴파일만 하고 실행 파일에 링크하지 않습니다. 컴파일러는 입력 .c 및 기타 소스 코드 파일에서 .o 접미사가 있는 개체 파일만 생성합니다. 메인 프로그램. -o 출력 파일 이름, 출력 파일 이름이 출력 파일 이름인지 확인하고 이 이름은 소스 파일과 동일한 이름을 가질 수 없습니다. 이 옵션이 제공되지 않으면 gcc는 기본 실행 파일 a.out을 제공합니다. -g, 기호 디버깅 도구(GNU의 gdb)에 필요한 기호 정보를 생성합니다. 소스 코드를 디버깅하려면 이 옵션을 추가해야 합니다.

-O, 프로그램의 컴파일 및 연결을 최적화합니다. 이 옵션을 사용하면 생성된 실행 파일의 실행 효율성이 향상되지만 컴파일 및 연결 속도가 향상됩니다. 그에 따라 땅이 느려집니다. -O2는 -O보다 컴파일 및 연결을 더 잘 최적화하지만 물론 전체 컴파일 및 연결 프로세스가 느려집니다. -Idirname, dirname이 가리키는 디렉터리를 프로그램 헤더 파일 디렉터리 목록에 추가합니다. 사전 컴파일 프로세스에서 사용되는 매개변수입니다. C 프로그램의 헤더 파일에는 A)#include B)#include "myinc.h" 두 가지 상황이 포함되어 있습니다. 그 중 A 유형은 꺾쇠괄호(lt; gt;)를 사용하고, B 유형은 큰따옴표(" ")를 사용합니다. 카테고리 A의 경우 전처리기 cpp는 시스템의 기본 포함 파일 디렉터리(예: /usr/include)에서 해당 파일을 검색하고, 카테고리 B의 경우 cpp는 현재 디렉터리에서 헤더 파일을 검색합니다. cpp에게 알려주려면 현재 디렉터리에 필요한 파일이 없으면 지정된 dirname 디렉터리에서 해당 파일을 검색하세요. 프로그래밍에서 필요한 포함 파일이 다른 디렉토리에 배포되는 경우

上篇: 쑤닝 노트북 구입은 애프터서비스인가요? 下篇: VideoStudio x6에서 Hollywood 전환을 다운로드하고 설치하는 방법은 무엇입니까?
관련 내용