본문 바로가기

프로그래밍 언어/C

터미널에서 C 프로그램 컴파일하고 실행하기

터미널에서 C 프로그램 컴파일하고 실행하기

C 프로그래밍을 시작하면서 필수적으로 익혀야 할 단계 중 하나가 터미널에서 C 코드를 컴파일하고 실행하는 방법입니다. 이 글에서는 컴파일러 설치부터 명령어 사용까지 차근차근 설명하여 초보자도 쉽게 따라할 수 있도록 안내합니다.

 

 

목차

  1. 컴파일러 설치
  2. 간단한 C 프로그램 작성
  3. 컴파일 과정
  4. 컴파일된 프로그램 실행
  5. 컴파일 옵션 활용하기
  6. 자주 발생하는 에러 해결

 

컴파일러 설치

Linux 또는 MacOS 시스템에서는 gcc와 같은 C 컴파일러가 기본으로 설치되어 있는 경우가 많습니다. Windows 사용자는 MinGW와 같은 컴파일러를 설치해야 합니다. 설치 여부는 아래 명령어로 확인할 수 있습니다:

gcc --version

위 명령어를 입력했을 때 버전 정보가 나오면 이미 설치되어 있는 것입니다. 설치되지 않은 경우 각 운영 체제에 맞는 패키지 매니저를 사용하여 설치할 수 있습니다.

 

 

 

간단한 C 프로그램 작성

컴파일 테스트를 위해 간단한 C 프로그램을 작성해보겠습니다. 편집기(예: vim, nano, Visual Studio Code 등)를 열고, 다음 코드를 입력하고 저장합니다:

#include <stdio.h>

int main() {
    printf("Hello, World!\\n");
    return 0;
}

위 코드를 hello.c라는 파일 이름으로 저장합니다.

 

 

 

컴파일 과정

C 프로그램을 실행하려면 먼저 소스 파일을 컴파일해야 합니다. gcc를 사용하여 컴파일하는 기본 명령어는 다음과 같습니다:

gcc hello.c -o hello

-o 옵션은 출력 파일의 이름을 지정하는 데 사용됩니다. 위 명령어는 hello.c를 컴파일하여 hello라는 실행 파일을 생성합니다.

 

 

 

컴파일된 프로그램 실행

컴파일이 완료되면 터미널에서 실행 파일을 실행할 수 있습니다. 다음과 같이 입력하여 프로그램을 실행합니다:

./hello

위 명령어를 실행하면 터미널에 Hello, World!가 출력됩니다. C 프로그램이 성공적으로 컴파일되고 실행된 것입니다.

 

 

 

 

컴파일 옵션 활용하기

다양한 옵션을 활용하면 gcc로 더욱 효율적으로 컴파일할 수 있습니다:

  • -Wall: 일반적인 경고 메시지를 모두 출력하여, 코딩 오류를 사전에 예방할 수 있습니다.
  • -g: 디버깅 정보를 추가하여, gdb와 같은 디버깅 툴에서 활용할 수 있게 합니다.
  • -O: 코드 최적화를 활성화하여, 실행 속도를 높입니다. -O1, -O2 등 다양한 단계가 있습니다.

예를 들어, gcc -Wall -g -O2 hello.c -o hello 명령어는 경고를 모두 출력하며, 디버깅 정보와 최적화까지 추가하여 컴파일합니다.

 

 

 

자주 발생하는 에러 해결

컴파일 과정에서 발생할 수 있는 일반적인 오류와 해결 방법은 다음과 같습니다:

에러 메시지 설명 해결 방법
command not found gcc 명령어를 인식하지 못할 때 발생합니다. 컴파일러가 설치되어 있는지 확인하고, 설치가 필요하면 설치합니다.
undefined reference 라이브러리나 함수가 정의되지 않았을 때 발생합니다. 누락된 라이브러리를 추가하거나 코드를 수정하여 함수 정의를 확인합니다.
syntax error 코드 내 문법 오류를 나타냅니다. 오타나 문법 오류를 수정합니다. 에러 위치를 참고하여 코드를 확인합니다.

위와 같은 에러는 초보자들이 자주 접할 수 있으며, 에러 메시지를 읽고 문제의 원인을 찾는 것이 중요합니다.

 

 

 

결론

이 글에서는 터미널에서 C 프로그램을 컴파일하고 실행하는 기본 과정을 살펴보았습니다. 컴파일러 설치, 간단한 코드 작성, 컴파일 옵션 활용법, 에러 해결법을 익히면 C 프로그래밍을 더 깊이 이해하고 효과적으로 사용할 수 있을 것입니다. 터미널에서의 작업은 초보자에게는 다소 어려울 수 있지만, 차근차근 연습하면 큰 도움이 될 것입니다.