2014-06-13 3 views
1

Linux에서 라이브러리 사용에 관한 질문이 있습니다. MYPROG라는 프로그램과 두 개의 라이브러리 LIBABC.SO 및 LIBXYZ.SO가 있다고 가정 해 보겠습니다. MYPROG는 "dlopen RTLD_NOW"모듈 LIBABC.SO를로드합니다. LIBXYZ.SO의 기능을 사용하고 MYPROG가 LIBXYZ.SO와 연결되어 있지 않으므로 "dlopen"이 실패합니다. 공유 라이브러리를 다른 공유 라이브러리에 링크 할 수 있습니까?ELF 공유 라이브러리

답변

3

확인합니다. 기존 라이브러리에 ldd를 실행하면 (은/usr/lib 디렉토리 /에서 예를 들면), 당신은 그들 중 많은 다른 라이브러리에 연결되며, 별도의 지시가없는 한, 공유 라이브러리가 적어도 C 런타임 라이브러리에 연결됩니다 볼 수 있습니다.

gcc -shared -o libABC.so -lXYZ obj1.o obj2.o 
+0

을 그리고 할 이유는 -fpic 옵션이 필요합니다

당신이 libABC.so를 만드는, GCC를 사용하는 예로서, libXYX.so에 연결. Windows DLL은 위치 독립적이지 않아도됩니다. 위치 독립적 코드는 정상 코드보다 성능이 좋지 않습니까? – Kouros

관련 문제