라이브러리가 될 파일(test.c)
라 이브러리를 사용하는 프로그램 (app.c)
1. 정적 라이브러리(또는 Archive)
정적라이브러리(또는 Archive)파일이라 불리우고 .a의 확장자를 가진다. 여러개의 오브젝트 파일들을 하나로 묶어 사용하기 때문에 Archive파일이라고 부른며 컴파일 시간에 코드를 포함하여 결정하기 때문에 정적 라이브러리라고 부른다. 위의 파일을 오브젝트 파일로 컴파일 한다.
# gcc -c test.c
# gcc -c app.c
test.o 파일과 app.o 파일이 생기는데 test.o 파일을 Archive로 묶어 보자. 라이브러리 파일의 작명법은 lib뒤에 이름을 붙이는 것이다.
# ar cr libtest.a test.o
libtest.a 파일이 생성되었을 것이며 이 라이브러리를 사용하여 컴파일 할려면 아래와 같이 한다. -L은 라이브러리 파일의 위치를 지정하며 -ltest가 libtest.a를 지정하게 된다.
#gcc -o app app.o -L. -ltest
2. 동적 라이브러리
실 행 시간에 라이브러리 파일을 찾아 코드를 포함하기 때문에 동적라이브러리라고 부른다. 즉, 정적 라이브러리는 컴파일 시간에 코드를 결정하기 때문에 소스가 변경되면 새로 컴파일 해야하지만, 동적 라이브러리의 경우 라이브러리만 교체하는 것으로도 변경이 가능하다.
# gcc -c -fPIC test.c
# gcc -c app.c
-fPIC옵션은 Position-Independent Code의 약자이며 test.o파일을 동적라이브러리로 사용하도록 컴파일 하는 옵션이다. 이렇게 컴파일된 오브젝트 파일을 .so파일로 묶으면 된다.
# gcc -shared -fPIC -o libtest.so test.o
컴파일은 아래와 같이 하면 된다.
# gcc -o app app.o -L. -ltest
만 일 libtest.a 파일과 libtest.so 파일이 같이 있을 경우 gcc 컴파일러는 libtest.so 파일을 먼저 지정하게 된다. 만일 libtest.a를 사용하여 컴파일 하고 싶으면 아래와 같이 실행하면 된다.
# gcc -static -o app app.o -L. -ltest
#include
<stdio.h>
void func()
{
printf("Hello World!!\n");
}
void func()
{
printf("Hello World!!\n");
}
라 이브러리를 사용하는 프로그램 (app.c)
int
main()
{
func();
return 0;
}
{
func();
return 0;
}
1. 정적 라이브러리(또는 Archive)
정적라이브러리(또는 Archive)파일이라 불리우고 .a의 확장자를 가진다. 여러개의 오브젝트 파일들을 하나로 묶어 사용하기 때문에 Archive파일이라고 부른며 컴파일 시간에 코드를 포함하여 결정하기 때문에 정적 라이브러리라고 부른다. 위의 파일을 오브젝트 파일로 컴파일 한다.
# gcc -c test.c
# gcc -c app.c
test.o 파일과 app.o 파일이 생기는데 test.o 파일을 Archive로 묶어 보자. 라이브러리 파일의 작명법은 lib뒤에 이름을 붙이는 것이다.
# ar cr libtest.a test.o
libtest.a 파일이 생성되었을 것이며 이 라이브러리를 사용하여 컴파일 할려면 아래와 같이 한다. -L은 라이브러리 파일의 위치를 지정하며 -ltest가 libtest.a를 지정하게 된다.
#gcc -o app app.o -L. -ltest
2. 동적 라이브러리
실 행 시간에 라이브러리 파일을 찾아 코드를 포함하기 때문에 동적라이브러리라고 부른다. 즉, 정적 라이브러리는 컴파일 시간에 코드를 결정하기 때문에 소스가 변경되면 새로 컴파일 해야하지만, 동적 라이브러리의 경우 라이브러리만 교체하는 것으로도 변경이 가능하다.
# gcc -c -fPIC test.c
# gcc -c app.c
-fPIC옵션은 Position-Independent Code의 약자이며 test.o파일을 동적라이브러리로 사용하도록 컴파일 하는 옵션이다. 이렇게 컴파일된 오브젝트 파일을 .so파일로 묶으면 된다.
# gcc -shared -fPIC -o libtest.so test.o
컴파일은 아래와 같이 하면 된다.
# gcc -o app app.o -L. -ltest
만 일 libtest.a 파일과 libtest.so 파일이 같이 있을 경우 gcc 컴파일러는 libtest.so 파일을 먼저 지정하게 된다. 만일 libtest.a를 사용하여 컴파일 하고 싶으면 아래와 같이 실행하면 된다.
# gcc -static -o app app.o -L. -ltest
'Server&OS > Linux' 카테고리의 다른 글
리눅스에서 ZIP 압축파일 풀기 (0) | 2010.05.25 |
---|---|
solairs10 + openssh + rssh 설치 Linux (0) | 2010.05.19 |
usermod ( 생성된 계정사용자 설정변경 ) (0) | 2010.05.13 |
[보안] 자동공격 봇 막기.2 (0) | 2010.04.24 |
PHP 애플리케이션을 가장 빠르게, Part 3: Memcache 데몬을 사용하여 메모리에 데이터 저장(cache)하기 (0) | 2010.04.24 |