gcc

2020. 8. 9. 00:29

gcc -v를 통해 버전을 확인하자.

 

설치되어있지 않다고 한다면, sudo apt install gcc 명령을 통해 설치하자.

 

gcc 사용하기

먼저, C언어를 배웠다면 정말 지긋지긋하기 짝이 없는 이 소스코드를 hello.c라는 이름으로 저장한다.

 

무소식이 희소식이다..

 

hello.c 파일을 실행시키려고 무심코 'hello'를 쳤다. 당연히 안된다. 어떠한 파일을 실행시키고 싶을 때에는 꼭 ./<실행 파일명>으로 적어줘야한다.

 

유닉스는 기본적으로 PATH라는 환경변수에 있는 디렉터리에서만 실행파일을 찾는다. 만약 PATH라는 도트 문자(.)이 들어있지 않으면 현재 디렉터리의 실행파일은 절대 실행되지 않는다. 게다가 현재 디렉터리를 PATH 환경 변수에 넣어준다 할지라도 현재 디렉터리를 먼저 찾는다든지 하는 일은 없다. 오로지 PATH에 지정한 순서대로 수행한다.

 

-o 옵션

-o 옵션은 출력(output) 파일명을 정하는 옵션이다. 만약, hello.c 파일의 실행 파일명을 hello라고 하고 싶다면 다음의 명령을 입력하면 된다.

gcc -o hello hello.c || gcc hello.c -o hello

이후에 ./hello 명령을 입력하면,

실행되며 "Hello, Linux =)"라는 문자열이 나올 것이다.

 

-c 옵션

-c 옵션은 컴파일(compile)을 해주는 옵션이다. 만약 hello.c 파일을 컴파일만 해주고 싶다면 다음의 명령을 입력하면 된다.

gcc -c hello.c // 결과물 : hello.o

이렇게 되면 결과적으로는 hello.o의 오브젝트 파일이 생성된다. 이는 컴파일된 파일이다. 실행시킬 수는 없다.

gcc -o hello hello.o

이 명령을 통해 이제 오브젝트 파일 hello.o의 링크 파일인 hello라는 실행 파일이 만들어지게 되고 ./hello를 통해 실행할 수 있다.

 

C언어는 기본적으로 두 가지 과정을 거쳐야만 실행파일을 만들어낸다.

1. 컴파일 (.c --> .o)

2. 링크 (.o --> a.out)

첫 번째 과정은 cc1(gcc 패키지 안에 있다.)이라는 녀석이 맡게 되고, 두 번째 과정은 ld라는 링커(linker)가 맡게 된다.

gcc는 상당히 똑똑하고 편리한 도구로써, .c, .o 등의 파일명 꼬리말을 보고 적절하게 C 컴파일러와 링커를 불러다가 원하는 실행파일을 만들어준다. 따라서 gcc는 컴파일러가 아니라 "컴파일러와 링커를 불러주는 대리인"이다.

 

-l 옵션

#include 문장에서 지정한 헤더 파일이 들어있는 곳을 정하는 옵션이다.

#include <stdio.h>
#include "my_header.h"

전자는 시스템 표준 헤더 디렉토리인 /usr/include를 기준으로 파일을 찾아서 포함시킨다. 표준 디렉터리이다.

후자는 현재 컴파일러가 실행되고 있는 디렉터리를 기준으로 헤더 파일을 찾는다.

둘 다 아니라면 명시적으로 -l<디렉터리>를 통해 정한다.

gcc -c hello.c -l..
gcc -c hello.c -linclude

전자는 헤더 파일이 소스 상위 디렉터리에 있다는 뜻이며, 후자는 현재 디렉터리의 include라는 디렉터리에 들어있다는 뜻이다.

-l 옵션은 얼마든지 여러번 쓸 수 있으며 주어진 순서대로 헤더 파일을 검색한다.

 

※ 주의사항

-l<디렉터리명>에서 -l과 디렉터리명 사이에 공백이 있어서는 안된다.

 

출처 : http://doc.kldp.org/KoreanDoc/html/gcc_and_make/gcc_and_make-2.html

'[▒] 언어 > LINUX(ubuntu)' 카테고리의 다른 글

ctrl+shift+v (복사/붙여넣기)가 안될 때  (0) 2020.08.26
gcc(ver.stack_over_flow)  (0) 2020.08.26
gcc(옵션 정리)  (0) 2020.08.09

BELATED ARTICLES

more