GCC 사용 옵션
* -o 옵션(소문자)
-o 옵션은 출력(output) 파일의 이름을 정하는 옵션이다. 아까 살펴보았던 hello.c를 가지고 예를 들어보면 다음과 같다
# gcc -o hello hello.c |
컴파일이 끝나면 hello라는 파일이 만들어진다. 이것을 실행 하려면 ./hello라고 하면 된다.
# ./hello Hello, Linux World |
* -c 옵션
-c 옵션은 컴파일만을 할 때 사용하는 옵션이다.
소스코드를 컴파일하면 소스코드의 기계어 코드인 오브젝트 코드가 만들어지고, 이것을 실행에 필요한 라이브러리와 링크하면 하나의 실행파일이 만들어진다. 하지만 -c 옵션을 사용하면 컴파일만을 실행하고 해당하는 오브젝트 코드인 .c 파일만 생성한다. 즉 hello.c 에서 .c 부분을 떼어내고 .o를 붙인 파일인 hello.o를 만들어 낸다. *이렇게 -c 옵션을 사용하는 이유는 여러 개의 소스 파일을 묶어서 실행파일을 만들기 위해서이다. * 예를 들어서 abc.c와 def.c라는 파일을 가지고 'xyz'라는 실행파일을 만들고 싶으면 다음과 같이 하면 된다. |
# gcc -c abc.c # ./xyz |
c
파일이름 : main.c |
extern void hello_world(); int main() |
파일이름 : hello.c |
#include void hello_world() { printf("Hello linux world\n"); } |
* -I 옵션 #include 문장에서 지정한 헤더 파일이 들어있는 곳을 정하는 옵션이다. 디렉토리를 명시할때는 -I<디렉토리>로 표시한다. * -l 옵션( L의 소문자) 사용하는 라이브러리를 명시한다. 라이브러리 프로그램 작성에 필요한 함수를 모아놓은 것이다. |
-l 옵션은 링크(link)할 라이브러리를 명시해 주는 옵션이다. 이것은 -I 옵션과 마찬가지로 붙여서 사용한다. 보통 라이브러리들은 lib*로 시작하기 때문에 앞에 있는 lib 글자는 생략한다. 즉, librpm.a 같은 경우는 맨 앞의 lib와 맨끝의 .a를 떼어낸다. |
예제 : 라이브러리를 만들고 사용해 보자. |
파일이름 : hello.h |
extern void print_hello ( void ); |
파일이름 : hello.c |
#include #include "hello.h" void print_hello ( void ) { printf ( "Hello, Linux World\n" ); } |
파일이름 : main.c |
#include "hello.h" int main ( void ) |
GCC로 컴파일하기
ar를 사용해서 라이브러리 archive를 만든다. ar은 라이브러리를 관리하는 프로그램이다.
이제 archive가 만들어졌으며 이를 사용해서 다시 컴파일해 보자
그러면 다음과 같은 에러가 발생한다.
* -L 옵션 이것은 라이브러리 archive의 경로를 지정할 때 사용하는 옵션이다. 방금 전에 'ld: cannot open -lhello: No such file or directory'라는 에러가 발생한 이유는 라이브러리의 경로를 지정해 주지 않았기 때문이다. 완성된 프로그램을 위해서는 -L 옵션을 사용해서 archive의 경로를 추가해 주어야 한다.
-L. 은 현재 디렉토리를 가리킨다 |
'Linux > Linux 명령어' 카테고리의 다른 글
useradd (0) | 2008.02.11 |
---|---|
리눅스용 fdisk 사용하기 (0) | 2007.09.09 |
mkfs 란? (0) | 2007.09.09 |