동적 라이브러리에 관해서..
우선 만들려는것의 개요입니다.
B라는 프로그램은 IPC메세지를 A로 전송합니다
A라는 프로그램은 B라는 프로그램으로 부터 IPC 통신을 통해서 메세지를 수신합니다.
IPC메세지에는 함수명과,라이브러리명 등등 여러가지 정보가 포함되어있습니다.
만약 B가 libmy.so 라는 라이브러리와, myfunc 라는 함수명을 알려주었다면
A는 해당 라이브러리를 오픈하고 myfunc을 호출하여 사용합니다
동적라이브러리에 관한 내용은 아래 링크를 참고하였고
http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/C/Documents/Make_Library
여기에 있는 함수들을 이용하여 동적라이브러리를 썼습니다.
위 링크의 예제는 1+2 과 같은 사용자의 입력이지만 여기서는 IPC메세지 수신으로 대체된것만이 다른점입니다.
자, 그런데 제가 여기서 추가하고자 하는 것은 라이브러리를 만들때 또 다른 라이브러리 사용을
위해서는 어떤식인가 하는 것입니다.
링크의 예제에서는
mysum의 코드에는 main이 없습니다. 목적코드만 필요하기 때문에 main이 필요가 없죠.
[root@localhost test]# gcc -fPIC -c mysum.c
[root@localhost test]# gcc -shared -W1,-soname,libmysutff.so.1 -o libmysum.so.1.0.1 mysum.o
[root@localhost test]# cp libmysum.so.1.0.1 /usr/local/lib
[root@localhost test]# ln -s /usr/local/lib/libmysum.so.1.0.1 /usr/local/lib/libmysum.so
위와같이 라이브러리를 만들었고 첫줄에서 mysum.o와 같은 목적코드를 만들었습니다.
저는 이 과정에 gcc -fPIC -c mysum.c -ldl -pthread ... 이런것들을 추가하고싶습니다.
그래서 mysum libmysum.so 가 저런 라이브러리들과 링크되길 바랍니다.
gcc -fPIC -c mysum.c -ldl -pthread -L경로들.. 을 추가하였고
mysum.h에 제가 원하는 해더들도 추가하였으며
-ㅣ 과 -L로 링크와 인클루드를 하였음에도 컴파일 오류가납니다.
정리하자면
B는 A로 IPC메세지를 보냄
A는 메세지를 받아서 라이브러리오픈 , 라이브러리 안의 함수실행
그 함수 안에는 -l 과 -L 그리고 해더로 추가해논 함수들을 써먹고싶으나
어떤식으로 컴파일하여 목적으로그램을 만들고, 라이브러리로 만드는지 방법을 모르겠습니다.
알려주세요 고수님들.
질문이 좀 두서없지만.. 부탁드립니다.
댓글 달기