우분투 c89 명령어 완벽 가이드: ANSI C 컴파일과 실무 예제

개요

우분투 리눅스 환경에서 POSIX 표준 C 컴파일러 인터페이스인 c89 명령어를 사용하는 방법을 알아봅니다. C89(ANSI C) 규격에 맞춘 기본 컴파일 과정부터 오브젝트 파일 생성, 라이브러리 링크까지 단계별 터미널 실습을 통해 익힐 수 있습니다.

c89 컴파일러 패키지 설치 및 환경 확인

c89 명령어 실습을 위해 패키지 목록을 갱신하고 gcc 및 c89 컴파일러 패키지를 설치합니다.

sudo apt-get update -qq && sudo apt-get install -y gcc c89

시스템 내에 c89 실행 파일이 정상적으로 설치되었는지 확인하기 위해 which c89 명령어를 실행합니다.

which c89

c89 명령어는 ANSI C(C89/C90) 표준 규격에 맞추어 C 소스 코드를 컴파일하는 도구입니다.
우분투 환경에서는 gcc의 래퍼(Wrapper) 스크립트로 동작하므로, 백엔드로 연결된 컴파일러의 세부 환경과 버전을 확인하기 위해 c89 --version 2>/dev/null || gcc -v 명령어를 실행합니다.
⚙️ [주요 옵션]

-c : 링크 단계를 건너뛰고 오브젝트 파일(.o)만 생성합니다.
-o : 생성할 실행 파일의 이름을 지정합니다.
-O : 실행 속도 향상을 위해 코드 최적화를 수행합니다.
-s : 실행 파일에서 심볼 테이블과 디버그 정보를 제거하여 파일 크기를 줄입니다.
-g : 디버깅을 위한 심볼 정보를 생성합니다.
-D : 소스 코드 컴파일에 사용할 전처리기 매크로를 정의합니다.
-U : 지정한 전처리기 매크로의 정의를 해제합니다.
-I : 헤더 파일을 검색할 추가 디렉터리 경로를 지정합니다.
-L : 라이브러리 파일을 검색할 추가 디렉터리 경로를 지정합니다.
-l : 링킹 과정에서 참조할 라이브러리를 지정합니다.

c89 –version 2>/dev/null || gcc -v

기본 C89 소스 코드 작성 및 실행 파일 빌드

c89 컴파일러 실습을 위해 ANSI C 표준 규격을 따르는 예제 소스 코드 hello.c 파일을 생성합니다.

printf ‘#include <stdio.h>\nint main(void) {\n    printf(“Hello, C89 Standard!\n”);\n    return 0;\n}\n’ > hello.c

작성된 hello.c 파일의 소스 코드가 올바르게 저장되었는지 확인하기 위해 cat hello.c 명령어를 실행합니다.

cat hello.c

c89 명령어로 hello.c 소스 코드를 컴파일하고, -o 옵션을 지정하여 실행 파일 hello를 생성합니다.

c89 -o hello hello.c

빌드된 hello 실행 파일을 실행하여 정상적으로 동작하는지 결과를 확인합니다.

./hello

오브젝트 파일 분리 컴파일(-c) 및 링크

분리 컴파일 실습을 위해 ANSI C 표준 규격을 따르는 예제 소스 코드 calc.c 파일을 생성합니다.

printf ‘#include <stdio.h>\nint main(void) {\n    int count = 5;\n    printf(“Count: %%d\n”, count);\n    return 0;\n}\n’ > calc.c

c89 명령어에 -c 옵션을 지정하여 링크 과정을 거치지 않고 소스 코드를 기계어로 컴파일한 calc.o 오브젝트 파일만 생성합니다.

c89 -c calc.c

생성된 calc.o 오브젝트 파일이 디렉터리에 올바르게 생성되었는지 확인하기 위해 ls -l calc.o 명령어를 실행합니다.

ls -l calc.o

c89 명령어에 -o 옵션을 사용하여 앞서 생성된 calc.o 오브젝트 파일을 링크하고 최종 실행 파일 calc를 생성합니다.

c89 -o calc calc.o

최종 빌드된 calc 실행 파일을 실행하여 프로그램이 의도한 대로 정상 동작하는지 결과를 확인합니다.

./calc

매크로 정의(-D)와 수학 라이브러리(-lm) 링크 실습

매크로 정의 및 수학 함수 링크 실습을 위해 예제 소스 코드 app.c 파일을 생성합니다.

printf ‘#include <stdio.h>\n#include <math.h>\nint main(void) {\n#ifdef DEBUG\n    printf("[DEBUG MODE]\n");\n#endif\n    printf(“sqrt(49.0) = %%.2f\n”, sqrt(49.0));\n    return 0;\n}\n’ > app.c

c89 명령어에 -DDEBUG 옵션을 지정하여 전처리기 매크로를 정의하고, -lm 옵션으로 외부 수학 라이브러리를 링크하여 실행 파일 app을 생성합니다.

c89 -DDEBUG -o app app.c -lm

빌드된 app 실행 파일을 실행하여 디버그 메시지 출력과 수학 연산 결과가 정상적으로 표시되는지 확인합니다.

./app

지금까지 우분투 환경에서 c89 명령어를 활용한 ANSI C 컴파일 방법과 실무 예제를 간단하게 살펴보았습니다.
레거시 표준 준수와 안정적인 C 프로그램 빌드가 필요한 개발 환경에서 유용하게 활용해 보시기 바랍니다.