Dev Tool Tips/C/C++2009. 11. 10. 18:22
정적라이브러리

$ gcc -c test.c
$ ar rc libtest.a test.o

공유라이브러리
$ gcc -fPIC -c test.c
$ gcc -shared -W1,-soname,libtest.so.1 -o libtest.so.1.0.1 test.o
$ cp libtest.so.1.0.1 /usr/local/lib
$ ln -s /usr/local/lib/libtest.so.1.0.1 /usr/local/lib/libtest.so

공유라이버리 사용
$ gcc -o mysoftware mysoftware.c -L/usr/local/lib -l



------ 아래는 공유라이브러리 사용 예 ------

/*-------------------shared_test.h-------------------*/

int lib_test(void);

 

/*-------------------shared_test.c-------------------*/

#include <stdio.h>

#include "shared_test.h"

 

int g_counter=0;

 

int lib_test(void)

{

       int ret=++g_counter;

       return ret;

}

 

/*-------------------test1.c-------------------*/

#include <stdio.h>

#include "shared_test.h"

 

int main(void)

{

       sleep(5);

       while(1)

       {

             printf("TEST1: %d\n", lib_test());

             sleep(5);

       }

       return 0;   

}

 

 

/*-------------------test2.c-------------------*/

#include <stdio.h>

#include "shared_test.h"

 

int main(void)

{

       sleep(5);

       while(1)

       {

             printf("TEST2: %d\n", lib_test());

             sleep(5);

       }

       return 0;   

}

 

------------- MAKEFILE -----------------

all: clean

       mkdir -p obj

       gcc -fPIC -c shared_test.c -o obj/shared_test.o

       gcc -shared -W1,-soname,libtest.so.1 -o obj/libtest.so obj/shared_test.o

       gcc -o obj/test1 test1.c -L./obj -ltest

       gcc -o obj/test2 test2.c -L./obj -ltest

 

clean:

       rm -rf obj/*

 


Posted by young.h.rhie