| [ CnUnix ] in KIDS 글 쓴 이(By): terzeron (microkid) 날 짜 (Date): 2002년 5월 1일 수요일 오후 05시 07분 04초 제 목(Title): Re: [질문] .... 답은 바로 환경 변수에 있습니다. LD_LIBRARY_PATH나 LD_PRELOAD 변수를 이용하면 라이브러리를 동적으로 선택할 수 있습니다. 그리고 그 라이브러리를 구성하는 오브젝트의 소스 파일에 함수 포인터를 이용해서 원하는 함수의 symbol을 대입해 주면 됩니다. 이러면 해당 라이브러리를 선택할 때 해당 함수를 결정할 수 있게 됩니다. 예를 들어, 3배와 4배의 값을 반환하는 함수를 바꿔가면서 쓴다고 하면... ---test1.c-------------- int quadruple(int a) { return a * 4; } void (*a) = quadruple; ---test2.c ----------- int triple(int a) { return a * 3; } void (*a) = triple; ---test.c-------------- #include <stdio.h> int (*a)(); int main() { printf("%d\n", a(3)); return 0; } test1.c와 test2.c를 각각의 so로 만들고 위의 환경변수를 이용하여 따로 동적으로 링크해서 사용하면 되겠죠. |