본문 바로가기

IT/리눅스

9. C 프로그래밍 환경


1. 컴파일러

GNU cc - gcc가 널리 사용

http://gcc.gnu.org에서 다운받아 설치할 수 있다.


단일 모듈 프로그램


예제 9.1 프로그램은 입력을 받으면서 입력된 줄 중에서 가장 긴 줄을 longest[] 배열에 복사하고

최종적으로 입력된 모든 줄 중에서 가장 긴 줄을 프린트


longest.c

#include <stdio.h>

#define MAXLINE 100


void copy(char from[], char to[]);


char line[MAXLINE];    // 입력 줄

char longest[MAXLINE];    // 가장 긴 줄


/* 입력된 줄 가운데 가장 긴 줄을 프린트한다 */

main() {

int len;

int max;


max = 0;


while(gets(line) != NULL) {

len = strlen(line);

if (len > max) {

max = len;

copy(line, longest);

}

}


if (max >0)    // 입력 줄이 있었다면

printf("%s,", longest);


return 0;

}


/* copy: from을 to에 복사; to가 충분히 크다고 가정 */

void copy(char from[], char to[]) {

int i;


i = 0;

while ( (to[i] = from[i]) != '\0')

++i;

}


$cc [-옵션] 파일

$gcc [-옵션] 파일


가장 간단한 사용법은 옵션을 사용하지 않고 컴파일

longest.c를 컴파일하면 목적 파일 longest.o를 만들고, 실행 파일 a.out을 만든다


$gcc -c longest.c

 - 목적 파일 longest.o를 만들지만 실행 파일은 만들지 않는다


$gcc -o longest longest.o

 - 목적 파일을 실행 파일로

$gcc longest

 - 실행 파일 실행


$gcc -o longest longest.c

 - 목적 파일을 만들고 실행 파일을 만드는 과정을 한 번에


$gcc -O -o longest longest.c

 - -O : 최적화 옵션


$gcc -S longest.c

 - 어셈블리어 프로그램 longest.s 파일을 생성


$gcc -o math -lm math.c

 - -l 옵션을 사용하여 특정 라이브러리를 링크할 수 있다.

 - -lxxx는 (보통 /user/lib 디렉토리에 있는) 라이브러리 libxxx.a를 링크하라는 의미

 - 예를 들어 math.c 프로그램이 수학 라이브러리(libm.a)를 사용한다면 위와 같이 -lm 옵션을 이용하여 libm.a를 링크할 수 있다

'IT > 리눅스' 카테고리의 다른 글

4. 인터넷  (0) 2016.06.30
2. 기초 지식  (0) 2016.06.30
1. 설치 및 기본 명령어  (0) 2016.06.30