블로그 이미지
progh2
지루한 것에서 벗어나 재미난 것 속으로 풍덩~☆

calendar

1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

Notice

Recent Post

Recent Comment

Archive

출처 - 비기닝 리눅스 프로그래밍 2nd

아래 4개의 파일이 있다고 할 때..
fred.c
[CODE]/* fred.c */ #include <stdio.h> void fred(int arg) { printf("fred: you passed %d ", arg); }[/CODE]
bill.c
[CODE]/* bill.c */ #include <stdio.h> void bill( char *arg) { printf("fred: you passed %s ", arg); }[/CODE]
lib.h
[CODE]/* lib.h */ void bill(char *); void fred(int);[/CODE]
program.h
[CODE]/* program.c */ #include "lib.h" int main() { bill("Hello World"); exit(0); }[/CODE]
컴파일..
[CODE]$ cc -c fred.c $ cc -c bill.c $ cc -o program program.c bill.o[/CODE]


ar
Static Library를 만들 때 사용한다. 사용법은 다음과 같다.
(bill.o 와 fred.o 두 오브젝트 파일을 합쳐 libfoo.a 를 만들고자 할 때 )
ar crv libfoo.a bill.o fred.o
manpage
http://man.kldp.org/wiki/GetManPage?action=GetManPage&lang=en&man=ar


ranlib
정적 라이브러리를 성공적으로 사용하기 위해서 일부 시스템, 특히 버클리(Berkeley) 유닉스로부터 파생된 시스템에서는 라이브러리 목차를 만들 필요가 있는데, 이를 위해 ranlib을 사용한다. 리눅스와 같이 GNU 소프트웨어 개발 도구를 사용할 때에는 이러한 것이 필요하지 않으며 또한 실행한다 하더라도 문제가 없다.
ranlib libfoo.a

manpage
http://man.kldp.org/wiki/GetManPage?action=GetManPage&lang=en&man=ranlib



정적라이브러리의 사용
이렇게 만든 정적라이브러리는 다음과 같이 사용할 수 있다.
cc -o program program.o libfoo.a
또는
cc -o program program.o -L. -lfoo
-L. 옵션은 컴파일러엑 라이브러리를 현재 디렉토리에서 찾도록 지시한다. -lfoo 옵션은 컴파일러에게 libfoo.a라는 라이브러리를 사용하도록 지시하고, 공유라이브러리인 libfoo.so가 존재한다면 이것을 사용하게 한다.



nm
오브젝트 파일, 라이브러리, 실행 프로그램에 어떤 함수들이 포함되는지 살펴보기 위해서는 nm 명령을 사용할 수 있다.
nm program
nm libfoo.a

manpage
http://man.kldp.org/wiki/GetManPage?action=GetManPage&lang=en&man=nm
posted by progh2