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

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

현재 설치된 c99 컴파일러의 세부 버전 정보를 확인하기 위해 c99 --version 명령어를 실행합니다.c99는 ISO C99 표준 규격에 맞춰 C 소스 코드를 컴파일하는 표준 명령어입니다.
⚙️ [주요 옵션]
-c : 링크 과정을 거치지 않고 소스 코드로부터 오브젝트 파일(.o)만 생성합니다.-o : 컴파일 결과로 생성할 출력 파일(실행 파일)의 이름을 지정합니다.-O : 실행 성능 향상을 위한 컴파일 최적화 레벨을 지정합니다.-g : 디버깅을 위한 심볼 정보를 바이너리에 포함하여 컴파일합니다.-I : 컴파일 시 헤더 파일을 탐색할 디렉터리 경로를 추가합니다.-l : 컴파일 과정에서 링크할 라이브러리를 지정합니다.-D : 소스 코드 전처리 단계에서 사용할 매크로를 정의합니다.

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

c99 명령어를 사용하여 hello_c99.c 소스 코드를 컴파일하고 -o 옵션으로 실행 파일 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](/ubuntu/20261016_014853_84/captures/s03_c01_cat_____EOF____math_demo_c__include__stdio_h___inc.png)
-DDEBUG 옵션으로 디버그 매크로를 정의하고 수학 라이브러리를 연결하는 -lm 옵션을 함께 지정하여 math_demo 실행 파일로 컴파일합니다.

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

4. 컴파일러 경고 플래그(-Wall) 및 코드 최적화(-O2) 적용
최적화 및 경고 옵션 실습을 위해 1부터 1,000,000까지의 누적 합을 계산하는 opt_demo.c 예제 소스 파일을 생성합니다.

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

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

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