수색…


비고

GCC (대문자)는 GNU Compiler Collection을 가리 킵니다. 이것은 C, C ++, Objective C, Fortran, Ada, Go 및 Java 용 컴파일러를 포함하는 오픈 소스 컴파일러 모음입니다. gcc (소문자)는 GNU 컴파일러 모음의 C 컴파일러입니다. 역사적으로 GCC와 gcc는 같은 의미로 사용되었지만 GCC는 C보다 많은 것을 컴파일하는 도구를 포함하고 있기 때문에 두 용어를 분리하려는 노력이 이루어지고 있습니다.

이 절의 문서는 GNU C 컴파일러 인 gcc를 참조합니다. 그 의도는 일반적인 작업과 옵션을 빠르게 조회하는 것입니다. GCC 프로젝트에는 https://gcc.gnu.org 에서 설치, 일반 사용 및 모든 명령 행 옵션에 대한 자세한 설명서가 있습니다. 여기서 대답하지 않은 질문에 대해서는 공식 GCC 문서를 참조하십시오. 특정 주제가 GCC 문서에서 명확하지 않은 경우 구체적인 예를 요청하십시오.

버전

번역 출시일
7.1 2017-05-02
6.3 2016-12-21
6.2 2016-08-22
5.4 2016-06-03
6.1 2016-04-27
5.3 2015-12-04
5.2 2015-07-16
5.1 2015-04-22
4.9 2014-04-22
4.8 2013-03-22
4.7 2012-03-22
4.6 2011-03-25
4.5 2010-04-14
4.4 2009-04-21
4.3 2008-03-05
4.2 2007-05-13
4.1 2006-02-28
4.0 2005-04-20
3.4 2004-04-18
3.3 2003-05-13
3.2 2002-08-14
3.1 2002-05-15
3.0 2001-06-18
2.95 1999-07-31
2.8 1998-01-07
2.7 1995-06-16
2.6 1994-07-14
2.5 1993-10-22
2.4 1993-05-17
2.3 1992-10-31
2.2 1992-06-08
2.1 1992-03-24
2.0 1992-02-22
1.42 1992-09-20
1.41 1992-07-13
1.40 1991-06-01
1.39 1991-01-16
1.38 1990-12-21
1.37 1990-02-11
1.36 1989-09-24
1.35 1989-04-26
1.34 1989-02-23
1.33 1989-02-01
1.32 1988-12-21
1.31 1988-11-19
1.30 1988-10-13
1.29 1988-10-06
1.28 1988-09-14
1.27 1988-09-05
1.26 1988-08-18
1.25 1988-08-03
1.24 1988-07-02
1.23 1988-06-26
1.22 1988-05-22
1.21 1988-05-01
1.20 1988-04-19
1.19 1988-03-29
1.18 1988-02-04
1.17 1988-01-09
1.16 1987-12-19
1.15 1987-11-28
1.14 1987-11-06
1.13 1987-10-12
1.12 1987-10-03
1.11 1987-09-05
1.10 1987-08-22
1.9 1987-08-18
1.8 1987-08-10
1.7 1987-07-21
1.6 1987-07-02
1.5 1987-06-18
1.4 1987-06-13
1.3 1987-06-10
1.2 1987-06-01
1.1 1987-05-24
1.0 1987-05-23
0.9 1987-03-22

"안녕하세요!" 일반적인 명령 행 옵션 포함

단일 소스 파일이있는 프로그램의 경우 gcc를 사용하는 것이 간단합니다.

/* File name is hello_world.c */
#include <stdio.h>

int main(void)
{
    int i;
    printf("Hello world!\n");
}

명령 행에서 hello_world.c 파일을 컴파일하려면 다음을 수행하십시오.

gcc hello_world.c

그러면 gcc는 프로그램을 컴파일하고 실행 파일을 a.out 파일로 출력합니다. 실행 파일의 이름을 지정하려면 -o 옵션을 사용하십시오.

gcc hello_world.c -o hello_world

실행 파일은 a.out 대신 hello_world로 명명됩니다. 기본적으로 gcc에 의해 방출되는 많은 경고가 없습니다. gcc에는 많은 경고 옵션이 있습니다. gcc 문서를 통해 무엇이 사용 가능한지 알아 보는 것이 좋습니다. '-Wall'을 사용하는 것은 좋은 시작점이며 많은 공통적 인 문제를 다룹니다.

gcc -Wall hello_world.c -o hello_world

산출:

hello_world.c: In function ‘main’:
hello_world.c:6:9: warning: unused variable ‘i’ [-Wunused-variable]
     int i;
         ^

이제 우리는 변수 'i'가 선언되었지만 함수에서 전혀 사용되지 않았다는 경고를받는 것을 봅니다.

디버거를 사용하여 프로그램을 테스트하려는 경우 디버깅 정보를 포함하도록 gcc에 지시해야합니다. 디버깅 지원에는 '-g'옵션을 사용하십시오.

gcc -Wall -g hello_world.c -o hello_world

hello_world는 현재 GDB가 지원하는 디버깅 정보를 가지고 있습니다. 다른 디버거를 사용하는 경우 다른 디버깅 옵션을 사용해야 출력이 올바르게 형식화 될 수 있습니다. 자세한 디버깅 옵션은 공식 gcc 문서를 참조하십시오.

기본적으로 gcc는 쉽게 디버깅 할 수 있도록 코드를 컴파일합니다. gcc는 최종 실행 파일이 동일한 결과를 산출하지만 더 빠른 성능을 가지며 더 작은 크기의 실행 파일을 생성 할 수 있도록 출력을 최적화 할 수 있습니다. '-O'옵션을 사용하면 최적화가 가능합니다. 최적화 수준을 지정하기 위해 O 다음에 추가 할 수있는 몇 가지 알려진 한정자가 있습니다. 각 최적화 레벨은 명령 행 옵션 세트 목록을 추가하거나 제거합니다. '-O2', '-Os', '-O0'및 '-Og'가 가장 일반적인 최적화 수준입니다.

gcc -Wall -O2 hello_world.c -o hello_world

'-O2'는 프로덕션 준비 코드의 가장 일반적인 최적화 수준입니다. 성능 향상과 최종 실행 파일 크기간에 우수한 균형을 제공합니다.

gcc -Wall -Os hello_world.c -o hello_world

'-Os'는 '-O2'와 유사하지만 실행 파일 크기를 늘려 실행 속도를 높일 수있는 특정 최적화는 사용할 수 없습니다. 최종 실행 파일 크기가 중요한 경우 '-Os'를 시도하고 최종 실행 파일에 눈에 띄는 크기 차이가 있는지 확인하십시오.

gcc -Wall -g -Og hello_world.c -o -hello_world

위의 '-Os'및 '-O2'예제에서 '-g'옵션이 제거되었습니다. 그 이유는 코드를 최적화하기 위해 컴파일러에게 말하기 시작하면 특정 코드 행이 더 이상 최종 실행 파일에 더 이상 존재하지 않아서 디버깅을 어렵게 만들기 때문입니다. 그러나 최적화가 실행될 때만 특정 오류가 발생하는 경우도 있습니다. 응용 프로그램을 디버그하고 컴파일러에서 코드를 최적화하게하려면 '-Og'옵션을 사용하십시오. 이것은 gcc가 디버깅 경험을 방해하지 않아야하는 모든 최적화를 수행하도록합니다.

gcc -Wall -g -O0 hello_world.c -o hello_world

'-O0'는 '-Og'보다 훨씬 적은 최적화를 수행합니다. gcc가 기본적으로 사용하는 최적화 수준입니다. 최적화가 사용되지 않도록하려면이 옵션을 사용하십시오.

gcc 버전 확인

gcc의 문서를 참조 할 때 실행중인 gcc의 버전을 알아야합니다. GCC 프로젝트에는 해당 버전에서 구현 된 기능을 포함하는 gcc의 각 버전에 대한 설명서가 있습니다. 실행중인 gcc의 버전을 확인하려면 '-v'옵션을 사용하십시오.

gcc -v

출력 예 :

Using built-in specs.
COLLECT_GCC=/usr/bin/gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/5.3.1/lto-wrapper
Target: x86_64-redhat-linux
Configured with: ../configure --enable-bootstrap --enable-languages=c,c++,objc,obj-c++,fortran,ada,go,lto --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-plugin --enable-initfini-array --disable-libgcj --with-default-libstdcxx-abi=gcc4-compatible --with-isl --enable-libmpx --enable-gnu-indirect-function --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux
Thread model: posix
gcc version 5.3.1 20160406 (Red Hat 5.3.1-6) (GCC)

이 예제에서는 gcc 버전 5.3.1을 실행하고 있습니다. 그런 다음 GCC 5.3 매뉴얼을 참조하십시오. 특정 버전의 문제가있는 경우에 대비하여 질문 할 때 gcc 버전을 포함시키는 것도 도움이됩니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow