우분투 c99 명령어 실습 가이드: C99 표준 컴파일 기초부터 옵션 활용까지

개요

c99는 POSIX 표준에 정의된 C 언어 컴파일러 인터페이스로, C99 표준 규격에 맞추어 C 프로그램을 빌드할 때 사용됩니다. 지루한 man 페이지 대신 Ubuntu 환경에서 직접 패키지를 설치하고 C 소스 코드를 컴파일 및 실행해 보며 핵심 옵션을 익힙니다. 기본 빌드부터 외부 라이브러리 링크, 최적화 및 매크로 정의 옵션까지 단계별 실습으로 완벽히 정리합니다.

1. c99 컴파일러 환경 확인 및 필수 패키지 설치

c99 컴파일러 사용을 위한 빌드 환경을 마련하고자 패키지 목록을 갱신하고 build-essential 패키지를 설치합니다.

sudo apt-get update -qq && sudo apt-get install -y build-essential

시스템 내 c99 실행 파일의 설치 경로를 확인하기 위해 which c99 명령어를 실행합니다.

which c99

현재 설치된 c99 컴파일러의 세부 버전 정보를 확인하기 위해 c99 --version 명령어를 실행합니다.
c99는 ISO C99 표준 규격에 맞춰 C 소스 코드를 컴파일하는 표준 명령어입니다.
⚙️ [주요 옵션]

-c : 링크 과정을 거치지 않고 소스 코드로부터 오브젝트 파일(.o)만 생성합니다.
-o : 컴파일 결과로 생성할 출력 파일(실행 파일)의 이름을 지정합니다.
-O : 실행 성능 향상을 위한 컴파일 최적화 레벨을 지정합니다.
-g : 디버깅을 위한 심볼 정보를 바이너리에 포함하여 컴파일합니다.
-I : 컴파일 시 헤더 파일을 탐색할 디렉터리 경로를 추가합니다.
-l : 컴파일 과정에서 링크할 라이브러리를 지정합니다.
-D : 소스 코드 전처리 단계에서 사용할 매크로를 정의합니다.

c99 –version

2. C99 표준 기본 예제 코드 작성 및 컴파일 실습

C99 표준 문법인 for 루프 내 변수 선언 코드가 포함된 예제 소스 hello_c99.c 파일을 생성합니다.

cat « ‘EOF’ > hello_c99.c
#include <stdio.h>
int main(void) {
for (int i = 0; i < 3; i++) {
printf(“c99 표준 루프 인덱스 선언 테스트: %d\n”, i);
}
return 0;
}
EOF

c99 명령어를 사용하여 hello_c99.c 소스 코드를 컴파일하고 -o 옵션으로 실행 파일 hello_c99를 생성합니다.

c99 -o hello_c99 hello_c99.c

생성된 hello_c99 실행 파일을 실행하여 프로그램이 정상적으로 동작하는지 결과를 확인합니다.

./hello_c99

3. 수학 라이브러리 링크(-lm) 및 전처리기 매크로(-D) 활용

수학 함수 사용과 조건부 컴파일 실습을 위해 math.h 및 DEBUG 매크로 코드가 포함된 math_demo.c 소스 파일을 생성합니다.

cat « ‘EOF’ > math_demo.c
#include <stdio.h>
#include <math.h>
int main(void) {
#ifdef DEBUG
printf("[DEBUG 모드 활성화]\n");
#endif
double val = sqrt(16.0);
printf(“sqrt(16.0) = %.2f\n”, val);
return 0;
}
EOF

-DDEBUG 옵션으로 디버그 매크로를 정의하고 수학 라이브러리를 연결하는 -lm 옵션을 함께 지정하여 math_demo 실행 파일로 컴파일합니다.

c99 -DDEBUG -o math_demo math_demo.c -lm

생성된 math_demo 실행 파일을 실행하여 디버그 메시지 출력 및 제곱근 계산 결과가 정상적으로 표시되는지 확인합니다.

./math_demo

4. 컴파일러 경고 플래그(-Wall) 및 코드 최적화(-O2) 적용

최적화 및 경고 옵션 실습을 위해 1부터 1,000,000까지의 누적 합을 계산하는 opt_demo.c 예제 소스 파일을 생성합니다.

cat « ‘EOF’ > opt_demo.c
#include <stdio.h>
int main(void) {
long long sum = 0;
for (int i = 1; i <= 1000000; i++) {
sum += i;
}
printf(“누적 합계: %lld\n”, sum);
return 0;
}
EOF

c99 명령어에 실행 성능을 높이는 -O2 옵션과 상세 경고를 출력하는 -Wall, -Wextra 옵션을 적용하여 opt_demo 실행 파일로 컴파일합니다.
잠재적인 코드 결함과 경고 사항을 사전에 점검하면서 효율적으로 최적화된 바이너리를 생성할 수 있습니다.

c99 -O2 -Wall -Wextra -o opt_demo opt_demo.c

생성된 opt_demo 실행 파일을 실행하여 누적 합계 계산 결과가 올바르게 출력되는지 확인합니다.

./opt_demo

지금까지 우분투 환경에서 c99 명령어를 사용해 C99 표준 컴파일 기초부터 주요 옵션 활용법까지 간단하게 살펴보았습니다.
안내해 드린 옵션들을 프로젝트 환경에 맞게 직접 적용해 보시면서 보다 안정적인 C 프로그래밍 개발 환경을 만들어 보시기 바랍니다.