2 min to read
Linux 프로그램과 컴파일

프로그램 작성과 컴파일
단일 모듈 프로그램 컴파일
$ gcc [-옵션] 파일 C 프로그램을 컴파일한다. 옵션을 사용하지 않으면 실행파일 a.out 를 생성한다.
$ gcc long.c
컴파일하여 목적 파일을 생성한다.
$ gcc -c long.c
목적 파일로부터 실행파일을 만들기 위해서는 -o 옵션을 사용한다.
$ gcc -o long long.o
$ long
혹은 목적 파일을 만들고 실행 파일을 만드는 이 두 과정을 단번에 할 수 있다.
$ gcc -o long long.c
또한 -S 옵션을 사용하여 어셈블리 프로그램 long.s 파일을 생성한다.
$ gcc -S long.c
-l 옵션을 이용하여 특정 라이브러리를 링크할 수 있다. -lxxx 는 (보통 /usr/lib 디렉토리에 있는) 라이브러리 libxxx.a를 링크하라는 의미이다. 예를 들어, test.c 프로그램이 수학 라이브러리(libm.a)를 사용한다면 다음과 같이 -lm 옵션을 이용하여 -libm.a을 링크할 수 있다.
$ gcc -o test -lm test.c
다중 모듈 프로그램
main.c
#include <stdio.h>
#include "copy.h"
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.h
#define MAXLINE 1000 /* maximum input line length */
void copy(char from[], char to[]);
copy.c
#include <stdio.h>
#include "copy.h"
/* copy: copy 'from' into 'to'; assume to is big enough */
void copy(char from[], char to[])
{
int i;
i = 0;
while ((to[i] = from[i]) != '\0')
++i;
}
$ gcc -o main main.c copy.c
$ main
Comments