gcc 튜토리얼
gcc 시작하기
수색…
비고
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 버전을 포함시키는 것도 도움이됩니다.