이번 시간에는 리눅스에서 많이 사용되는 컴파일러인 gcc와 qt의 컴파일 명령에 대해서 알아보도록 하자.

 

gcc

먼저, gcc는 GNU Compiler Collection으로 FSF에서 개발되었으며, 품질이 매우 좋고 이식성이 좋은 컴파일러로서 오픈소스 계열에서 가장 많이 사용되고 있는 컴파일러 중 하나이다.

 

동작과정을 살펴보면, 소스코드 컴파일 및 컴파일하여 만들어진 어셈블리 언어를 어셈블하며, 유닉스 loader를 불러 실행 파일을 생성한다. 아래 간략히 도식화된 그림을 보면서 살펴보도록 하자.

 

사용자 삽입 이미지

 

gcc 컴파일 설명

[전처리기] preprocessing

# define와 같은 지시자를 해석하며, cpp라는 별도의 유틸리티를 호출한다.

 

[컴파일] compilation

입력 받은 파일을 임시 어셈블리 파일로 변환한다. 이 단계에서는 어셈블러를 바로 호출하므로 별도로 출력되는 산출물이 없다.

 

[어셈블] assembly

*.o 확장자가 붙는 오브젝트(object) 파일을 생성한다.

 

[링크] linking

*.o 모듈을 실행 파일에서 적절한 곳에 배치한다.

 

gcc 컴파일 명령

이제 컴파일하는 명령에 대해 간단히 알아보자.

1. 소스파일을 제작한다. (예: like.c)

2. gcc 명령으로 컴파일 한다. (한번에...)

  # gcc -v [--save-temps] -o like like.c

  ※ --save-temps는 컴파일 과정에서 발생되는 중간파일을 삭제하지 않고 저장하는 옵션으로서 선택적으로 사용 가능

 

qt 컴파일 명령

qt는 GUI 환경을 지원하는 라이브러리로서 다른 컴파일러와 같이 동작하여 원하는 결과물을 생성한다. (리눅스 계열에서는 gcc를 많이 이용한다.)

gcc의 컴파일 과정에 대한 설명은 위에서 다루었으므로, 여기서는 바로 qt 컴파일 방법에 대해 알아보자.

 

1. 소스파일을 제작한다. (예: hellow.cpp)

2. qmake 명령으로 컴파일한다.

  # qmake -project hellow.cpp

    -> hellow.pro 파일이 생성된다.

  # qmake

    -> hellow.pro 파일을 참고하여 Makefile라는 파일이 생성된다.

  # make

    -> hellow라는 실행파일이 생성된다.

  # ./hellow

    -> hellow 프로그램을 실행한다.

3. 또는 아래와 같은 방법으로 한번에 컴파일하는 것도 가능하다.

  # g++ -l$QTDIR/include -L$QTDIR/lib -lqt-mt hellow.cpp -o hellow

  # ./hellow


Posted by 영웅기삼
,