Page 21 -
P. 21
실행할 컴퓨터마다 다르다는 것이다. PC는 전화기보다 용도가 다양하다. 냉장고와 셋톱박스는 사
용하는 ‘언어’가 서로 다르다. C 언어도 마찬가지로 이런 문제가 존재한다. C는 다양한 기계어(어
C
셈블리(assembly) )를 추상화한 것이다. 1
TAKEAWAY 1.3 제대로 작성된 C 프로그램은 여러 플랫폼에 이식할 수 있다. 들어가며
필자는 이 책에서 C 프로그램의 이식성(portability)을 보장하도록 ‘올바르게’ 작성하려고 최선을 다
했다. 아쉽게도 C를 지원한다고 내세우지만 최신 표준과 맞지 않은 플랫폼도 존재한다. 게다가 제
대로 작성하지 않은 부분을 그냥 넘기거나, 이식성이 떨어진 확장 기능을 사용하는 플랫폼도 있
다. 이렇듯 한 플랫폼에서 실행하고 테스트하는 것만으로는 이식성을 보장할 수 없다.
컴파일러는 앞에서 본 조그만 프로그램을 여러분이 사용하는 PC, 전화기, 셋톱박스, 냉장고 등을
비롯한 특정 플랫폼에 맞게 번역했을 때 제대로 실행될지를 검사한다.
(리눅스나 맥 OS 같은) POSIX 시스템이라면 대부분 c99라는 C 컴파일러가 제공된다. 앞에서 본
예제 프로그램을 컴파일하려면 다음과 같이 명령을 실행하면 된다.
터미널
0 > c99 -o getting-started getting-started.c -lm
그러면 아무 문제 없이 컴파일되어 getting-started란 이름의 실행 파일이 현재 디렉터리에 생성
된다. Exs 1 이 명령의 구성 요소를 하나씩 살펴보면 다음과 같다.
● c99: 컴파일러 프로그램
C
● -o getting-started: 컴파일러에서 처리한 결과(컴파일러 출력(compiler output) )를
getting-started라는 파일에 저장한다.
C
● getting-started.c: 소스 파일(source file) , 즉 작성한 C 코드가 담긴 파일의 이름을 지정한
다. 파일 이름 끝에 붙은 .c라는 확장자는 이 파일이 C 프로그래밍 언어로 작성된 것임을 나
타낸다.
● -lm: 필요하다면 표준 수학 함수를 추가한다. 뒤에서 이런 함수를 사용할 것이다.
C
이제 새로 생성된 실행 파일(executable) 을 실행한다. 방법은 다음과 같다.
Exs 1 각자 터미널에서 컴파일해 보기 바란다.
25
모던c.indd 25 2021-12-29 오후 2:32:57